без сервера, шифрование темы на AWS - PullRequest
1 голос
/ 12 ноября 2019

Я создаю тему, используя без сервера на AWS. Все это прекрасно работает, однако я хочу зашифровать тему с помощью SSE. Как мне это сделать. Какой должен быть формат файла yaml. Пока у меня есть

MyTopic:
  Type: AWS::SNS::Topic
  Properties:
    TopicName: MyTopic
MyTopicPolicy:
  Type: AWS::SNS::TopicPolicy
  Properties:
    Topics:
      - Ref: MyTopic
    PolicyDocument:
      Id: MyTopicPolicy
      Version: '2012-10-17'
      Statement:
        - Sid: AllowSubscribe
          Effect: Allow
          Principal:
            AWS: <ID>
          Action:
            - SNS:Subscribe            
          Resource: !Ref MyTopic

Ответы [ 2 ]

0 голосов
/ 14 ноября 2019

Как показано в ответе выше, вам нужно будет указать ключ KMS в определении темы SNS. Вы можете использовать ключ KMS по умолчанию для SNS (псевдоним aws/sns) или создать свой собственный

. Ниже вы можете посмотреть в CloudFormation, как создать зашифрованную тему и ключ KMS в одном шаблоне - используя свой собственный KMS. Ключ. Политика ключей настроена так, чтобы разрешить администрирование и потребление всей учетной записью AWS, хотя вы, вероятно, захотите заблокировать ее, используя принцип наименьших привилегий, в зависимости от требований безопасности среды, в которой вы работаете.

---
AWSTemplateFormatVersion: '2010-09-09'
Description: Demo template for Encrypted SNS Topic

Resources:
  SNSKMSKey:
    Type: 'AWS::KMS::Key'
    Properties:
      Description: Demo KMS Key Policy
      Enabled: true
      EnableKeyRotation: true
      KeyPolicy:
        Version: 2012-10-17
        Id: KmsKeyPolicy
        Statement:
          - Sid: SimpleKeyPolicyAllowAccountAdmin
            Effect: Allow
            Principal:
              AWS: !Sub "arn:aws:iam::${AWS::AccountId}:root"
            Action:
              - 'kms:*'
            Resource: '*'
          - Sid: SimpleKeyPolicyAllowAccountUsage
            Effect: Allow
            Principal:
              AWS: !Sub "arn:aws:iam::${AWS::AccountId}:root"
            Action:
              - 'kms:Decrypt'
              - 'kms:Encrypt'
              - 'kms:GenerateDataKey*'
              - 'kms:DescribeKey'
            Resource: '*'


  SNSKmeKeyAlias:
    Type: "AWS::KMS::Alias"
    Properties:
      AliasName: !Sub "alias/${AWS::StackName}-SNSEncryptionKey"
      TargetKeyId: !Ref SNSKMSKey

  # -- Encrypted  SNS Topic -- #
  EncryptedSNSTopic:
    Type: AWS::SNS::Topic
    Properties:
      TopicName: !Sub "${AWS::StackName}-EncryptedSNSTopic"
      KmsMasterKeyId: !Ref SNSKMSKey


Outputs:
  KmsKeyId:
    Value: !Ref SNSKMSKey
  TopicArn:
    Value: !Ref EncryptedSNSTopic
0 голосов
/ 13 ноября 2019

Просто добавьте KmsMasterKeyId

MyTopic:
  Type: AWS::SNS::Topic
  Properties:
    TopicName: MyTopic
    KmsMasterKeyId: 1234abcd-12ab-34cd-56ef-1234567890ab

Источник: Документ AWS Cloudformation

...