Amazon dynamodb 具有IAM角色的aws跨帐户dynamodb访问
我在一个帐户中有一个aws ecs ec2实例,它正试图在另一个aws帐户上访问dynamob db表。我没有使用任何aws访问密钥和id,而是使用附加到ec2实例的aws iam角色 这是一个.net项目,我的appsettings.Staging.json就是这个Amazon dynamodb 具有IAM角色的aws跨帐户dynamodb访问,amazon-dynamodb,aws-sdk,amazon-iam,amazon-ecs,aws-sdk-net,Amazon Dynamodb,Aws Sdk,Amazon Iam,Amazon Ecs,Aws Sdk Net,我在一个帐户中有一个aws ecs ec2实例,它正试图在另一个aws帐户上访问dynamob db表。我没有使用任何aws访问密钥和id,而是使用附加到ec2实例的aws iam角色 这是一个.net项目,我的appsettings.Staging.json就是这个 { "aws": { "region": "ap-southeast-1" }, "DynamoDbTables": { "BenefitCategory": "stag_table1", "B
{
"aws": {
"region": "ap-southeast-1"
},
"DynamoDbTables": {
"BenefitCategory": "stag_table1",
"Benefit": "stag_table2"
},
"Logging": {
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}
这是我的内联策略附加到“ecsInstanceRole”
“XXXXXXXXXXXX”>>这是dynamodb表所在的aws帐户
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"dynamodb:PutItem",
"dynamodb:DescribeTable",
"dynamodb:DeleteItem",
"dynamodb:GetItem",
"dynamodb:Scan",
"dynamodb:Query",
"dynamodb:UpdateItem",
"dynamodb:DeleteTable",
"dynamodb:UpdateTable",
"dynamodb:GetRecords"
],
"Resource": [
"arn:aws:dynamodb:ap-southeast-1:xxxxxxxxxxx:table/stag_table1",
"arn:aws:dynamodb:ap-southeast-1:xxxxxxxxxxx:table/stag_table2",
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"dynamodb:ListGlobalTables",
"dynamodb:ListTables"
],
"Resource": "*"
}
]
}
在此设置中,api尝试连接到同一帐户中的表。我已在角色ecsInstanceRole的受信任实体中添加了另一个aws帐户,但该帐户仍不工作
有没有办法让aws sdk或aws ecs/ec2实例自动在其他aws帐户中找到dynamodb表?
两个帐户都需要ec2的角色策略,以及允许ec2服务承担这些角色的信任策略。目标帐户中的角色策略将授予IAM对Dynamodb表的权限
然后,源EC2实例必须承担该角色才能访问该表
授予EC2服务器访问权以承担该角色
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "abcdTrustPolicy",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {"AWS": "arn:aws:iam::SOURCE_ACCOUNT_ID:role/NAME_A"}
}
]
}
允许实例配置文件角色的名称切换到其他帐户中的角色
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowToAssumeCrossAccountRole",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::DESTINATION_ACCOUNT_ID:role/ACCESS_DYNAMODB"
}
]
}
授予对名为access\u Dynamodb的Dynamodb的访问权限的角色
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowDDBActions",
"Effect": "Allow",
"Action": [
"dynamodb:*"
],
"Resource": "*"
}
]
}
目的地中的信任策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DestinationTrustPolicy",
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {"Service": "ec2.amazonaws.com"}
}
]
}
谢谢,我正在调查。第一个和最后两个策略有点混淆,它们是要添加到目标aws帐户下的策略。ie只有dynamodb表和第二个策略的帐户将被添加到拥有aws ecs ec2实例的源aws帐户中?我们是否也应该在.net代码中提到目标aws帐户号?@SandepKrishna你找到了吗?我想知道你是否必须修改代码才能首先承担这个角色?谢谢。@void我没有时间检查它。我将我的整个开发环境转移到一个新的aws帐户,因此现在不需要跨帐户dynamodb。但我想这应该行得通。