Я использую Службу управления ключами (KMS) в AWS и в настоящее время настраиваю политики ключей .
Я создал две роли KmsUser и KmsAdmin и прикрепил следующую политику ключей к моему CMK:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "KMS KeyAdmin access",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::1234567890:role/KmsAdmin",
"arn:aws:iam::1234567890:user/myadmin"
]},
"Action": [
"kms:Create*",
"kms:Describe*",
"kms:Enable*",
"kms:List*",
"kms:Put*",
"kms:Update*",
"kms:Revoke*",
"kms:Disable*",
"kms:Get*",
"kms:Delete*",
"kms:TagResource",
"kms:UntagResource",
"kms:ScheduleKeyDeletion",
"kms:CancelKeyDeletion"
],
"Resource": "*"
},
{
"Sid": "KMS KeyUser access",
"Effect": "Allow",
"Principal": {"AWS": [
"arn:aws:iam::1234567890:role/KmsUser"
]},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
}
]
}
Проблема заключается в том, что теперь, если я пытаюсь использовать мой ключ в качестве myadmin пользователь (к которому прикреплена политика AdministratorAccess ) Я получаю сообщение об ошибке в CLI:
$ aws kms encrypt --key-id "alias/test-key" --plaintext fileb:///tmp/plaintext.dat
An error occurred (AccessDeniedException) when calling the Encrypt operation: User: arn:aws:iam::1234567890:user/myadmin is not authorized to perform: kms:Encrypt on resource: arn:aws:kms:eu-north-1:1234567890:key/99999999-9999-9999-9999-99999999999
Что особенно странно, это то, что Имитатор политики IAM говорит мне, что все должно работать как положено:
Если я вручную добавлю пользователя myadmin в качестве тарифа к Key User policy, все отлично работает.