Создание AWS Secret Manager с кросс-аккаунтом KMS CMK - PullRequest
1 голос
/ 05 июня 2019

Как включить шифрование в состоянии покоя с помощью менеджера секретов AWS с помощью KMS CMK из другой учетной записи?

1 Ответ

1 голос
/ 05 июня 2019

AWS Secret manager не может быть зашифрован с помощью ключей кросс-аккаунта с помощью Консоли управления AWS, вместо этого вам нужно использовать AWS CLI

Если вы хотите создать ключ и поделиться им с другим аккаунтом

Сначала создайте ключ KMS CMK с помощью политики ключей, обеспечивающей правильный доступ к учетной записи общего доступа. Вокруг этого есть множество учебников.

Здесь мы даем ключ доступа к корню Аккаунта. Также мы ограничили использование ключа для автоматического масштабирования и управления секретами.

{
    "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": "*"
}

Теперь Учетная запись Корень должен предоставить доступ пользователю или роли для использования ключа. Типичная политика 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-кет, поэтому продолжайте выполнять следующие шаги.

Если у вас уже есть 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...