无需sts:AssumeRole,实现跨账号IAM角色访问DynamoDB表
解决方案:使用DynamoDB资源策略实现跨账号访问
完全可以实现,DynamoDB支持基于资源的策略(表级策略),逻辑和你之前用的S3桶策略一致,通过给AccountB的DynamoDB表附加策略,直接授权AccountA中的IAM角色对其进行管理操作。
具体策略示例
将以下策略附加到AccountB的目标DynamoDB表上,替换占位符为实际信息:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::AccountA-ID:role/your-accountA-iam-role-name" }, "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem", "dynamodb:Scan", "dynamodb:Query" // 根据实际管理需求添加或删除操作 ], "Resource": [ "arn:aws:dynamodb:region:AccountB-ID:table/your-table-name", "arn:aws:dynamodb:region:AccountB-ID:table/your-table-name/index/*" // 如果需要访问全局/本地二级索引,添加此行 ] } ] }
关键注意事项
- 权限交集要求:除了表策略,AccountA中的IAM角色自身需要有允许执行上述DynamoDB操作的IAM策略(即身份策略),AWS权限遵循"身份策略允许 + 资源策略允许"的双重校验逻辑。
- 最小权限原则:避免使用
"Action": "*",根据实际需要的管理操作(如查询、写入、修改表结构等)指定具体的DynamoDB操作,降低权限风险。 - 区域与ARN格式:确保策略中的DynamoDB表ARN包含正确的AWS区域、账号ID和表名。
内容的提问来源于stack exchange,提问作者Pugs08
相关产品推荐
相关产品推荐

