向交叉帐户机密管理员授予对尚不存在的IAM角色的访问权限

克里斯

我有两个AWS帐户:一个保存我的机密的帐户,一个用于部署我的cloudformation堆栈的帐户。我正在使用cloudformation将我的基础结构部署为代码,并具有一个非常简单的CD管道:

  1. 部署到我的开发堆栈
  2. 等待批准
  3. 破坏开发栈
  4. 部署到我的生产堆栈

作为我的堆栈一部分创建的EC2实例在启动过程中依赖于机密信息。我想将机密ARN添加到我的EC2用户数据脚本中,然后在执行用户数据脚本时使用AWS命令行检索机密值。

我的EC2实例使用的IAM服务角色也被创建为我的cloudformation脚本的一部分。因此,IAM角色ARN在启动堆栈之前是未知的。我有点陷入困境:在授予对我的机密的访问权限之前,我无法启动堆栈,但是由于资源策略中的主体不接受通配符,因此无法授予对我的机密的访问权限。

有人知道我如何能够为我的机密创建一个不需要预先知道IAM角色ARN的机密资源策略吗?也许还有其他想法?

乔·B

在资源策略中指定主体的更好替代方法是使用基于属性的访问控制(ABAC,又名标记)。关于为IAM策略进行设置有相当详细的教程,可以针对资源策略进行修改。

使用这种方法,您将创建资源策略以授予对另一个帐户的访问权限,但仅适用于具有给定标签的主体。然后,当您在另一个帐户中创建角色时,可以为他们添加需要访问的秘密的标签。例如,仅当标签“ access-project”对于秘密和访问角色具有相同的值时,下面的资源策略才将GetSecretValue授予帐户123456789012:

{
  "Version" : "2012-10-17",
  "Statement" : [ {
    "Effect" : "Allow",
    "Principal": {"AWS": "123456789012" }, 
    "Condition": {
        "StringEquals": {
            "aws:ResourceTag/access-project": "${aws:PrincipalTag/access-project}"
        }
    },
    "Action" : "secretsmanager:GetSecretValue",
    "Resource" : "*"
  } ]
}

在将此资源策略添加到密钥后,您还应将标记“ access-project”添加到密钥和用户/角色。请注意,这仅授予GetSecretValue。让用户修改机密或机密上的标签可能是一个坏主意,但是如果您需要这样做,则还应包括所引用教程中的其他条件。当然,如果您不想在机密中添加标签,也可以在资源策略中对标签进行硬编码。

通常,此方法易于管理,因为您不必在每次添加或删除用户/角色时都不断更新资源策略。您只需在用户和/或秘密中添加或删除标签。

执行此操作的另一种方法是只向整个帐户公开机密,然后在该帐户限制内,谁可以通过IAM策略访问机密(可能仍按照本教程中的标签使用)。跨帐户访问需要资源策略授予访问权限和IAM用户/角色策略授予访问权限。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

403 IAM权限,尽管向代理授予管理员权限以授予列表意图的权限

向非管理员用户授予RDP访问权限

如何添加用于向Azure AD应用授予静态权限的管理员帐户?

班级管理员不存在

即使功能存在于雪花中,显示对功能的授权也会向帐户管理员提供“不存在或未授权”

拒绝访问:令牌中需要存在 scp 或角色声明。即使管理员已授予所有权限,也会出现错误

向管理员授予现有Powershell的权限

授予非管理员用户访问模板模块的权限

向同一帐户中的IAM用户授予AWS IAM角色权限

Sonata管理员异常:变量“ adminPool”不存在

Laravel 5类管理员不存在

LaravelQuestion - 类管理员不存在

使用非管理员帐户时,SQL Linked Server返回错误“不存在登录映射”

如何授予PyCharm管理员权限?

创建可以对任何数据库进行身份验证的管理员用户(甚至那些尚不存在的数据库)

ADWtest需要访问权限才能访问组织中只有管理员才能授予的资源

如何在 Azure SQL Server 中向 AAD 用户授予管理员权限

具有帐户管理员角色的Snowpipe权限不足错误

GitHub如何根据仓库的标签授予用户管理员访问权限

Google Play 显示错误:您的管理员未授予您访问此项目的权限

管理员如何授予对应用程序的访问权限?

管理员如何仅针对应用程序注册授予特定用户访问权限?

Azure 全局管理员无法(禁用)在“访问控制(IAM)”下添加角色

如何在标准级别帐户(Windows 7)中临时向管理员提升权限?

Windows 10升级后,管理员帐户缺少完全访问权限

创建广告帐户Facebook Marketing API时如何使用管理员访问权限

Django管理员搜索不存在的内容会返回所有项目

创建django管理员后获取网站匹配查询不存在错误

如何防止管理员超级用户引起“站点匹配查询不存在”错误?