【问题标题】:AWS Secret Manager creation with cross account KMS CMK使用跨账户 KMS CMK 创建 AWS Secret Manager
【发布时间】:2019-10-20 15:21:53
【问题描述】:

如何使用来自不同账户的 KMS CMK 通过 AWS Secret Manager 启用静态加密?

【问题讨论】:

    标签: amazon-web-services aws-kms aws-secrets-manager


    【解决方案1】:

    AWS Secret manager不能使用 AWS 管理控制台使用跨账户密钥加密,您必须使用 AWS CLI

    如果您想创建密钥并将其共享给另一个帐户

    首先使用密钥策略创建 KMS CMK 密钥,以正确访问共享帐户。这方面有很多教程。

    在这里,我们授予对 AccountA 根目录的密钥访问权限。此外,我们还限制了密钥用于自动缩放和 secretsmanager。

    {
        "Sid": "Allow use of the key for SSM only",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::AccountA:root"
        },
        "Action": [
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:GenerateDataKey*"
        ],
        "Resource": "*",
        "Condition": {
            "StringLike": {
                "kms:ViaService": [
                    "secretsmanager.*.amazonaws.com",
                    "autoscaling.*.amazonaws.com"
                ]
            }
        }
    },
    {
        "Sid": "Allow reading of key metadata",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::AccountA:root"
        },
        "Action": "kms:DescribeKey",
        "Resource": "*"
    },
    {
        "Sid": "Allow attachment of persistent resources",
        "Effect": "Allow",
        "Principal": {
            "AWS": "arn:aws:iam::AccountA:root"
        },
        "Action": [
            "kms:CreateGrant",
            "kms:ListGrants",
            "kms:RevokeGrant"
        ],
        "Resource": "*"
    }
    

    现在帐户 A root 必须授予用户或角色访问权限才能使用密钥。授予访问权限的典型 IAM 策略如下所示。此策略应与账户 A 中的角色或用户相关联。

    {
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": [
                "kms:Encrypt",
                "kms:Decrypt",
                "kms:ReEncrypt*",
                "kms:GenerateDataKey*"
            ],
            "Resource": [
                "arn:aws:kms:<KEY>"
            ]
        }
    ]
    

    }

    现在您已经准备好使用 KMS ket,因此请继续执行以下步骤。

    如果您已经拥有来自其他帐户的 KMS CMK

    首先检查密钥是否可以访问

    aws kms describe-key --key-id arn:aws:kms:<KEY_ID>
    

    如果您没有收到响应,则意味着您无权访问密钥,请检查密钥策略并确保正确授予所有访问权限。

    如果您有权访问密钥,则使用 AWS CLI 来使用密钥。

    重新分配给现有的秘密

    aws secretsmanager update-secret --secret-id <secret id> --kms-key-id <KMS key id>
    

    或者用密钥创建一个新的秘密

    aws secretsmanager create-secret --name <NameOfTheSecret> \
    --description "Test Description" \
    --kms-key-id <KMS Key Id>
    

    【讨论】:

    • 当您在 Secrets Manager 中更改密钥的 CMK 时,您必须重新加密密钥才能使用新的 CMK。这将适用于上面使用 update-secret 的情况。
    猜你喜欢
    • 1970-01-01
    • 2017-07-05
    • 2015-05-11
    • 1970-01-01
    • 2018-12-09
    • 2020-12-25
    • 1970-01-01
    • 2023-03-27
    • 2021-08-13
    相关资源
    最近更新 更多