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>