如何共享 DynamoDB table 以在组织的其他成员之间保持透明?

How possible to share a DynamoDB table to be transparent among other members of an organization?

我创建了一个组织,并使用新的管理帐户命名为 MA 并邀请了我的个人帐户,命名为 A。 我想要的是与组织 的成员共享由 MA 创建的 dynamodb table(例如与根目录下的 A.

为此,我创建了一个策略,授予对 table 的完全访问权限,附加到加入 A (即正式成员)的全新角色到组织 ),但不幸的是,从 A 帐户,我看不到 table.

我哪里弄错了?

政策JSON - dynamodb-products-table-full-access:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "dynamodb:ListContributorInsights",
                "dynamodb:DescribeReservedCapacityOfferings",
                "dynamodb:ListGlobalTables",
                "dynamodb:ListTables",
                "dynamodb:DescribeReservedCapacity",
                "dynamodb:ListBackups",
                "dynamodb:PurchaseReservedCapacityOfferings",
                "dynamodb:DescribeLimits",
                "dynamodb:ListExports",
                "dynamodb:ListStreams"
            ],
            "Resource": "*"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": "dynamodb:*",
            "Resource": "arn:aws:dynamodb:eu-central-1:<MA ID>:table/products"
        }
    ]
}

Another AWS account 类型的角色附加到 A 帐户。

执行以下步骤:

  • 在允许访问 DynamoDB table.
  • 的“MA”帐户(DynameDB table 所有者)中创建一个角色
  • 允许“A”账户中的用户承担在“MA”账户中创建的角色。
  • 使用 'Switch Role' AWS 控制台功能

“MA”账户中的角色

它需要访问 DynamoDB 的权限table。在“dynamodb-products-table-full-access”策略上显示的语句就足够了。 此外,在创建角色时,您需要将“A”帐户定义为可信实体。

允许“A”帐户中的用户承担该角色

在帐户“A”上创建一个具有适当权限的策略,以代入在上一步中创建的角色:

{
  "Version": "2012-10-17",
  "Statement": {
      "Effect": "Allow",
      "Action": "sts:AssumeRole",
      "Resource": "arn:aws:iam::<MA_Account_ID>:role/DynamoFullAccess"
    }
}

将该策略添加到相应 IAM 用户或 IAM 用户组的权限策略中:

使用 'Swith Role' 功能

最后,账户“A”用户进入AWS控制台时,需要使用“角色切换”功能:

输入 MA 帐户 ID 和在该帐户上创建的角色名称:

然后他就可以使用table(注意角色承担'MA_Account_Dynamo'):


参考:

Delegate access across AWS accounts using IAM roles