【问题标题】:Creating a cross account IAM Lambda role using CDK使用 CDK 创建跨账户 IAM Lambda 角色
【发布时间】:2020-11-11 15:16:00
【问题描述】:

在我的场景中,我有 2 个帐户(11111111、22222222)需要在第三个帐户中调用 lambda:33333333。第三个帐户中的 lambdas 将从前 2 个帐户中的 lambdas 调用。

第三个帐户中的 lambdas 是即时创建的,但我需要给他们一个我希望使用 CDK 创建的角色(我将使用第三个帐户凭据来完成 - 这里没有跨帐户的东西)。

我正在遵循here 的说明 - 使用 STS 调用 lambda 似乎很简单。我不太清楚的是如何在 cdk 中定义第三个帐户角色。

这是我的堆栈:


export class ModuleIAMStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props)

    const lambdaModuleRole = new Role(this, 'moduleRole', {
      roleName: 'moduleRole',
      assumedBy: new AccountPrincipal({ accountId: '111111111' }),
      managedPolicies: [ManagedPolicy.fromAwsManagedPolicyName('service-role/AWSLambdaBasicExecutionRole')] // My lambdas in 3X... will not need to access any resources so this should be enough to execute
    })
  }
}

我不清楚assumedBy 行。 AccountPrincipal 是正确的条目吗?如果是,我该如何输入 22222222 帐户?

【问题讨论】:

  • “我不完全清楚的是如何在 cdk 中定义第三个帐户角色” - 您是否希望通过在其中一个帐户中执行 cdk 代码来在第三个帐户中创建一个角色?如果是这样,我怀疑这是可能的,除非在您的第三个帐户中,您已经授予其他帐户访问所有必要资源的权限。我们在多个帐户之间执行 x-account 操作,但我们已经在各种帐户中定义了角色,并且允许这些角色由执行 x-account 操作的帐户承担。快速浏览了一下链接,好像和我们一样。
  • 不,我将使用 cdk 和第三个帐户凭据在第三个帐户中创建角色。那里没问题。更多关于如何在第三个账户中定义角色,我将在账户 1/2 中使用其 ARN 来调用第三个账户 lambdas。主要是我不清楚assumedBy 是否正确 - 我如何将它用于 2 个帐户?总的来说,我对 IAM 的这一部分有点模糊。
  • 我从未使用过 cdk,但从文档看来 AccountPrincipal 用于单个帐户,而对于 CF/sam 模板(我们使用),相应的属性需要一个帐号数组将此应用于(请参阅docs.aws.amazon.com/IAM/latest/UserGuide/…)。也许是 cdk 的限制?
  • 或者,查看前段时间记录的这个错误(似乎现在已修复),它显示了具有多个帐户 ID 的类的用法:github.com/aws/aws-cdk/issues/924
  • 对于任何来到这里并试图关注问题中链接的博客文章的人,这里有一篇与该文章非常相似但使用 CDK 的博客文章:faun.pub/…

标签: amazon-web-services aws-cdk


【解决方案1】:

AccountPrincipal 将生成这样的主体:arn:aws:iam::123456789012:root。这足以允许整个帐户。

至于 CDK - 你快到了:

assumedBy: new iam.CompositePrincipal(
    new iam.AccountPrincipal('111111111'),
    new iam.AccountPrincipal('22222222')
),

【讨论】:

  • 如果我想将用户与 AccountPrincipal 一起使用如何解决?
  • @Judi 你应该问一个新问题而不是添加评论。
猜你喜欢
  • 2017-03-16
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
  • 2015-07-11
  • 1970-01-01
相关资源
最近更新 更多