Каков правильный синтаксис политики ключей KMS, чтобы избежать ошибок MalformedPolicyDocument? - PullRequest
0 голосов
/ 04 декабря 2018

Я пытаюсь создать Политику ключей KMS AWS, и меня мучают попытки заставить Cloudformation принять политику ключей.Все, что я смог найти и прочитать, говорит, что эта политика должна быть действительной, и синтаксис при ее запуске правильный, но возвращает MalformedPolicyDocumentExceptionnull (Служба: AWSKMS; Код состояния: 400;

Имееткто-нибудь еще сталкивался с этим, если да, то есть какие-нибудь мысли или предложения о том, как я могу устранить ошибки? Я застрял и ударился об этом, и не вижу, что мне не хватает, и мой google-fu терпит неудачуя.

Фрагмент кода:

SnowflakeProdKMS:
Type: AWS::KMS::Key
Properties:
  Description: KMS key used by Snowflake to encrypt/decrypt data stored in s3
  Enabled: True
  EnableKeyRotation: False
  KeyPolicy:
    Version: 2012-10-17
    Id: key-default-1
    Statement:
      - Sid: Enable IAM User Permissions
        Effect: Allow
        Principal:
          AWS: 
            - !Sub arn:aws:iam::${AWS::AccountId}:root
        Action: 
          - kms:*
        Resource: '*'
      - Sid: Enable AWSAdminRole to have full permissions to KMS key
        Effect: Allow
        Principal: 
          AWS: 
            - !Sub arn:aws:iam::${AWS::AccountId}:/role/AWSAdminRole
        Action: kms:*
        Resource: '*'
      - Sid: Allow use of the key by other roles
        Effect: Allow
        Principal:
          AWS: 
            - !Sub arn:aws:iam::${AWS::AccountId}:role/AWSAdminRole
            # - !Sub arn:aws:iam::${AWS::AccountId}:role/SnowflakeAccessRole
        Action: 
          - kms:Encrypt
          - kms:Decrypt
          - kms:ReEncrypt
          - kms:GenerateDataKey
          - kms:DescribeKey
        Resource: '*'
      - Sid: Allow attachment of persistent resources
        Effect: Allow
        Principal:
          AWS: 
            - !Sub arn:aws:iam::${AWS::AccountId}:role/AWSAdminRole
            # - !Sub arn:aws:iam::${AWS::AccountId}:role/SnowflakeAccessRole
            - !Sub arn:aws:iam::${AWS::AccountId}:root
        Action: 
          - kms:CreateGrant
          - kms:ListGrants
          - kms:RevokeGrant
        Resource: '*'
        Condition: 
          Bool: 
            - kms:GrantIsForAWSResource: 'true'

1 Ответ

0 голосов
/ 05 декабря 2018

После долгих проб и ошибок и обращения к другим партнерам я нашел решение для вышеуказанной проблемы.

Условие для фрагмента выше было неверным и должно было быть отформатировано следующим образом:

Condition: 
          Bool: 
            "kms:GrantIsForAWSResource": true

После изменения этого правила политика прошла без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...