如何通过CloudFormation获取AWS KMS Key Arn并将其传递到IAM角色内联策略中?

时间:2020-02-26 09:27:10

标签: amazon-cloudformation amazon-iam aws-kms

我正在尝试通过CloudFormation模板创建IAM角色和KMS密钥。我的要求是,首先我需要创建KMS密钥,获取它的ARN,然后在创建IAM角色时,选择传递该KMS ARN。这是我的政策:

Resources:
  myKey:
    Type: AWS::KMS::Key
    Properties:
      Description: Key for encrypting S3 Buckets
      Enabled: TRUE
      KeyPolicy:
        Version: '2012-10-17'
        Statement:
          - Sid: Enable IAM User Permissions
            Effect: Allow
            Principal:
              AWS: arn:aws:iam::11111111:root
            Action: kms:*
            Resource: '*'
      KeyUsage:  ENCRYPT_DECRYPT
  myAlias:
    Type: AWS::KMS::Alias
    Properties:
      AliasName: alias/key_for_s3_encrytpion
      TargetKeyId:
        Ref: myKey
  RootRole:
      Type: 'AWS::IAM::Role'
      Properties:
        RoleName: 'Lambda-S3-SNS-VPC-Role-cft'
        AssumeRolePolicyDocument:
          Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Principal:
                Service:
                  - lambda.amazonaws.com
              Action:
                - 'sts:AssumeRole'
        Path: /
        ManagedPolicyArns:
          - !Ref AmazonVPCFullAccessARN
          - !Ref AmazonS3FullAccessARN
          - !Ref AWSLambdaBasicExecutionRoleARN
          - !Ref AmazonSNSFullAccessARN
          - !Ref AmazonSSMFullAccessARN
        Policies:
          - PolicyName: kms_cross_account
            PolicyDocument:
              Version: 2012-10-17
              Statement:
                - Effect: Allow
                  Action:
                    - "kms:Decrypt"
                    - "kms:Encrypt"
                    - "kms:GenerateDataKey"
                    - "kms:DescribeKey"
                    - "kms:ReEncrypt*"
                  Resource:
                    - <Here I need to pass KMS Key ARN created above>

我尝试将!Sub放入资源中

- !Sub 'arn:aws:kms:${AWS::Region}:${AWS::AccountId}:alias/key_for_s3_encrytpion'

但直接将其作为字符串放置

1 个答案:

答案 0 :(得分:2)

已解决。我使用!GetAtt myKey.Arn来获得iAM角色的KMS ARN