amazon-web-services - 根据实例标识符将 rds:DeleteDBInstance 限制为指定的 arn
问题描述
我正在为具有有限权限的脚本创建 AWS IAM 策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"rds:DescribeDBSnapshots",
"rds:RestoreDBInstanceFromDBSnapshot",
"rds:StartDBInstance",
"rds:DeleteDBInstance"
],
"Resource": [
"arn:aws:rds:*:*:snapshot:*",
"arn:aws:rds:*:*:subgrp:*",
"arn:aws:rds:*:*:og:*",
"arn:aws:rds:eu-west-1:*:db:*"
],
"Condition": {
"IpAddress": {
"aws:SourceIp": "MYPUBLICIP"
}
}
}
]
}
该脚本必须能够恢复带有prod
as 标识符的 RDS 实例的快照,从而创建一个带有 as 标识符的新实例test
。
我希望脚本只删除具有给定标识符 ( test
) 的实例。
是否可以根据标识符限制rds:DeleteDBInstance
到指定的arnrds: RestoreDBInstanceFromDBSnapshot
而不会阻止处理prod
标识符?
解决方案
最好标记您的 RDS 数据库实例并根据资源标签控制访问。
标记数据库实例后,您只需更新策略并为 DeleteDBInstance 操作创建单独的语句:
{
"Effect": "Allow",
"Action": "rds:DeleteDBInstance",
"Resource": "arn:aws:rds:*:*:db:*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "MYPUBLICIP"
},
"StringEquals": {
"aws:RequestTag/environment": [
"test"
]
}
}
}
只有在资源包含标签 environment=test 时,此操作才会成功。
推荐阅读
- python-3.x - ValueError: max_df 对应于 < 文档而不是管道的 min_df
- ios - 为什么附加函数不接受相同类型的数据?
- java - 为什么java流跳过方法强制执行其他操作
- c - 为什么在不使用 srand() 设置种子的情况下使用 rand() 一些数字会发生变化?
- mysql - 我需要创建一个查询,从我创建的 Defined Schema 表中选择具有最不同客户 ID 的 5 个州
- r - kableExtra 中的度数符号
- java - myRectangle.calculateArea(); 返回错误“包 myRectangle 不存在”
- sql-server - Spring Boot - 数据库服务器重启后Tomcat jdbc连接池不恢复
- python - 用熊猫中B列中的前一行值填充A列中的行值
- c# - 为什么泛型参数需要在转换为特定类型之前转换为对象?