aws secrets manager 和多个账户
aws secrets manger and multiple accounts
我在一个帐户中有一个秘密,我想在另一个帐户中共享。在另一个账户中,我们有一个需要这个秘密的 lambda 函数。我遵循了这个并且效果很好。
AWS share secrets between accounts
现在我们想看看是否有办法向组或其他帐户中的角色授予对秘密的访问权限,而不是向调用此 lambda 的每个用户授予访问权限。我尝试使用调用该函数的角色,但我在 lambda 的响应中被拒绝了。然后接下来我在另一个帐户中尝试了一个组,但它不允许我保存它。我只是一直告诉校长是不正确的。谢谢
这是我用于政策的内容。
客户管理的密钥政策
{
"Sid": "Permissions for external users",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::external-acct:role/Cross-Account-KMS-Role"
},
"Action": [
"kms:Decrypt",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "secretsmanager.us-east-1.amazonaws.com"
},
"StringLike": {
"kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:central-acct:secret:my-secret"
}
}
}
现在我们在秘密本身上设置了这个策略。
{
"Version" : "2012-10-17",
"Statement" : [ {
"Effect" : "Allow",
"Principal" : {
"AWS" : "arn:aws:iam::external-acct:role/Cross-Account-KMS-Role"
},
"Action" : "secretsmanager:GetSecretValue",
"Resource" : "*",
"Condition" : {
"ForAnyValue:StringEquals" : {
"secretsmanager:VersionStage" : "AWSCURRENT"
}
}}
然后我们在外部账户上创建了这个策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:us-east-1:central-acct:secret:my-secret"
},
{
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "arn:aws:kms:us-east-1:central-acct:key/customer-key-1"
}
]
}
然后我们将策略附加到上面的角色。现在,当我为自己的帐户而不是角色执行此操作时,我可以使用 aws cli 并获取秘密。现在当然我不是在使用这个角色,而是我的帐户。
好的,所以我想通了。看来是CMK上的资源策略不对。我用过这样的
arn:aws:kms:us-east-1:my_acct:key/my_policy
当我需要这样的时候。
arn:aws:kms:us-east-1:my_acct:key/my_policy_id
我在一个帐户中有一个秘密,我想在另一个帐户中共享。在另一个账户中,我们有一个需要这个秘密的 lambda 函数。我遵循了这个并且效果很好。
AWS share secrets between accounts
现在我们想看看是否有办法向组或其他帐户中的角色授予对秘密的访问权限,而不是向调用此 lambda 的每个用户授予访问权限。我尝试使用调用该函数的角色,但我在 lambda 的响应中被拒绝了。然后接下来我在另一个帐户中尝试了一个组,但它不允许我保存它。我只是一直告诉校长是不正确的。谢谢
这是我用于政策的内容。 客户管理的密钥政策
{
"Sid": "Permissions for external users",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::external-acct:role/Cross-Account-KMS-Role"
},
"Action": [
"kms:Decrypt",
"kms:DescribeKey"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"kms:ViaService": "secretsmanager.us-east-1.amazonaws.com"
},
"StringLike": {
"kms:EncryptionContext:SecretARN": "arn:aws:secretsmanager:us-east-1:central-acct:secret:my-secret"
}
}
}
现在我们在秘密本身上设置了这个策略。
{
"Version" : "2012-10-17",
"Statement" : [ {
"Effect" : "Allow",
"Principal" : {
"AWS" : "arn:aws:iam::external-acct:role/Cross-Account-KMS-Role"
},
"Action" : "secretsmanager:GetSecretValue",
"Resource" : "*",
"Condition" : {
"ForAnyValue:StringEquals" : {
"secretsmanager:VersionStage" : "AWSCURRENT"
}
}}
然后我们在外部账户上创建了这个策略
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:us-east-1:central-acct:secret:my-secret"
},
{
"Effect": "Allow",
"Action": "kms:Decrypt",
"Resource": "arn:aws:kms:us-east-1:central-acct:key/customer-key-1"
}
]
}
然后我们将策略附加到上面的角色。现在,当我为自己的帐户而不是角色执行此操作时,我可以使用 aws cli 并获取秘密。现在当然我不是在使用这个角色,而是我的帐户。
好的,所以我想通了。看来是CMK上的资源策略不对。我用过这样的
arn:aws:kms:us-east-1:my_acct:key/my_policy
当我需要这样的时候。
arn:aws:kms:us-east-1:my_acct:key/my_policy_id