要解决AWS RDS-DB的问题,使用户可以使用但角色无法使用,可以采取以下步骤:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowRDSDBAccess",
"Effect": "Allow",
"Action": [
"rds:DescribeDBInstances",
"rds:CreateDBInstance",
"rds:ModifyDBInstance",
"rds:DeleteDBInstance",
"rds:ListTagsForResource"
],
"Resource": "*"
},
{
"Sid": "DenyRDSRoleAccess",
"Effect": "Deny",
"Action": [
"rds:DescribeDBInstances",
"rds:CreateDBInstance",
"rds:ModifyDBInstance",
"rds:DeleteDBInstance",
"rds:ListTagsForResource"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalArn": "arn:aws:iam::123456789012:role/RDSRole"
}
}
}
]
}
上述策略中,第一个Statement允许用户执行RDS实例的一些操作。第二个Statement拒绝角色执行相同的操作,条件中指定了角色的ARN。
创建一个IAM用户,并将上述策略附加到用户上。
创建一个IAM角色,用于给RDS实例授权。确保角色没有与上述策略冲突的其他策略。例如,你可以创建一个名为"RDSRole"的角色。
启动或更新RDS实例,将IAM角色与实例关联。
aws rds modify-db-instance --db-instance-identifier your-db-instance --apply-immediately --enable-iam-database-authentication --backtrack-window 0 --cloudwatch-logs-export-configuration EnableLogTypes=["audit","error","general","slowquery"] --vpc-security-group-ids your-vpc-security-group-ids --enable-performance-insights
确保在上述命令中指定了正确的--db-instance-identifier和--vpc-security-group-ids。
这样,用户将能够使用IAM用户的凭证来访问RDS实例,但角色将被拒绝访问,因为它们的ARN与IAM策略中指定的ARN不匹配。