【问题标题】:Cross-account IAM principal pointing to same account: no-op?指向同一账户的跨账户 IAM 委托人:无操作?
【发布时间】:2022-12-10 01:51:08
【问题描述】:
简而言之:如果我创建了一个包含跨账户 Principal 的 IAM 策略,但相关账户是我已经在其中操作的账户,这是空操作吗?
我的理解(来自here)是像下面这样的 IAM 语句可用于跨账户访问,即委托给另一个账户,允许它允许访问相关资源:
{
Action = "kms:*"
Effect = "Allow"
Principal = {
AWS = "arn:aws:iam::XYZXYZXYZXYZ:root"
}
Resource = "*"
}
(显然,XYZXYZXYZXYZ 是某个帐户 ID)。
但是,如果帐户 ID 不是另一个帐户怎么办? ID希望这什么都不做。 ID恐惧它授予完全访问权限。后一种选择似乎很疯狂:任何人都可以确认吗?
【问题讨论】:
标签:
amazon-web-services
identity-management
【解决方案1】:
我假设这是在 KMS 密钥策略中,否则指定委托人是没有意义的/无论如何都是不允许的。
因此我引用https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-default.html:
以下默认密钥策略声明至关重要。
- 它为拥有 KMS 密钥的 AWS 账户提供了对 KMS 密钥的完全访问权限。
与其他 AWS 资源策略不同,AWS KMS 密钥策略不会自动向账户或其任何用户授予权限。要向帐户管理员授予权限,密钥策略必须包含提供此权限的显式声明,如下所示。
- 除了密钥策略外,它还允许账户使用 IAM 策略来允许访问 KMS 密钥。
如果没有此权限,则允许访问密钥的 IAM 策略无效,但拒绝访问密钥的 IAM 策略仍然有效。
- 通过向帐户管理员(包括无法删除的帐户根用户)授予访问控制权限,降低了密钥变得难以管理的风险。
帐户内的委托人不会立即访问密钥,但只需向他们添加策略即可授予他们访问权限。 KMS 是为数不多的服务之一两个都资源和身份策略需要授予访问权限。