向交叉帐户机密管理员授予对尚不存在的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条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

班级管理员不存在

来自分类Dev

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

来自分类Dev

Laravel 5类管理员不存在

来自分类Dev

LaravelQuestion - 类管理员不存在

来自分类Dev

如何授予PyCharm管理员权限?

来自分类Dev

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

来自分类Dev

Sonata Admin Bundle将权限授予自定义管理员角色

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

如何为群组和管理员授予权限

来自分类Dev

在运行时授予管理员权限

来自分类Dev

Java在Eclipse中授予管理员权限

来自分类Dev

授予应用程序管理员权限

来自分类Dev

授予整个注册表Hive的管理员权限?

来自分类Dev

如何为群组和管理员授予权限

来自分类Dev

Java在Eclipse中授予管理员权限

来自分类Dev

未向Dynamics 365管理员授予安装权限

来自分类Dev

为什么在我只允许管理员访问权限后,我在管理员组中的帐户无法访问asp.net页

来自分类Dev

如何使用IAM策略AWS仅向S3存储桶的根帐户用户授予访问权限?

Related 相关文章

  1. 1

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

  2. 2

    班级管理员不存在

  3. 3

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

  4. 4

    Laravel 5类管理员不存在

  5. 5

    LaravelQuestion - 类管理员不存在

  6. 6

    如何授予PyCharm管理员权限?

  7. 7

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

  8. 8

    Sonata Admin Bundle将权限授予自定义管理员角色

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

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

  18. 18

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

  19. 19

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

  20. 20

    如何为群组和管理员授予权限

  21. 21

    在运行时授予管理员权限

  22. 22

    Java在Eclipse中授予管理员权限

  23. 23

    授予应用程序管理员权限

  24. 24

    授予整个注册表Hive的管理员权限?

  25. 25

    如何为群组和管理员授予权限

  26. 26

    Java在Eclipse中授予管理员权限

  27. 27

    未向Dynamics 365管理员授予安装权限

  28. 28

    为什么在我只允许管理员访问权限后,我在管理员组中的帐户无法访问asp.net页

  29. 29

    如何使用IAM策略AWS仅向S3存储桶的根帐户用户授予访问权限?

热门标签

归档