在 Aurora 中创建、修改和删除资源的权限策略
以下各节展示了授予和限制资源访问权限的权限策略示例:
            允许用户在 AWS 账户中创建数据库实例
            
            以下是支持 ID 为 123456789012 的账户为您的 AWS 账户创建数据库实例的示例策略。该策略要求新数据库实例的名称以 test 开头。新数据库实例还必须使用 MySQL 数据库引擎和 db.t2.micro 数据库实例类。此外,新数据库实例必须使用以 default 开头的选项组和数据库参数组,并且它必须使用 default 子网组。
        
            
            
            
    - JSON
- 
            
     
        
- 
             
                
                {
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "AllowCreateDBInstanceOnly",
         "Effect": "Allow",
         "Action": [
            "rds:CreateDBInstance"
         ],
         "Resource": [
            "arn:aws:rds:*:123456789012:db:test*",
            "arn:aws:rds:*:123456789012:og:default*",
            "arn:aws:rds:*:123456789012:pg:default*",
            "arn:aws:rds:*:123456789012:subgrp:default"
         ],
         "Condition": {
            "StringEquals": {
               "rds:DatabaseEngine": "mysql",
               "rds:DatabaseClass": "db.t2.micro"
            }
         }
      }
   ]
}
 
 
 
此策略包含一个为  用户指定以下权限的语句:
            
                
                
                
            - 该策略可让该账户使用 CreateDBInstance API 操作创建数据库实例(这还适用于 create-db-instance AWS CLI 命令和 AWS Management Console)。 
- Resource元素指定用户可以执行操作的资源。使用 Amazon Resource Name (ARN) 指定资源。此 ARN 包括资源所属服务的名称(- rds)、AWS 区域(在该示例中,- *指示任何区域)、AWS 账号(在该示例中,- 123456789012为账号)以及资源的类型。有关创建 ARN 的更多信息,请参阅Amazon RDS 中的 Amazon 资源名称(ARN)。
 - 该示例中的 - Resource元素为用户指定有关资源的以下策略限制:
 - 
                      
                      
                      
                      
                  - 新数据库实例的数据库实例标识符必须以 - test开头 (例如,- testCustomerData1、- test-region2-data)。
 
- 新数据库实例的选项组必须以 - default开头。
 
- 新数据库实例的数据库参数组必须以 - default开头。
 
- 新数据库实例的子网组必须是 - default子网组。
 
 
 
- Condition元素指定数据库引擎必须是 MySQL 并且数据库实例类必须是- db.t2.micro。- Condition元素指定策略生效的条件。您可以通过使用- Condition元素添加其他权限或限制。有关指定条件的更多信息,请参阅Aurora 的策略条件键。此示例指定- rds:DatabaseEngine和- rds:DatabaseClass条件。有关- rds:DatabaseEngine的有效条件值的信息,请参阅 CreateDBInstance 中的- Engine参数下的列表。有关- rds:DatabaseClass的有效条件值的信息,请参阅  数据库实例类支持的数据库引擎。
 
         
            该策略不指定 Principal 元素,因为在基于身份的策略中,您未指定获取权限的委托人。附加了策略的用户是隐式委托人。向 IAM 角色附加权限策略后,该角色的信任策略中标识的委托人将获取权限。
            
            有关 Aurora 操作的列表,请参阅服务授权参考中的 Amazon RDS 定义的操作。
         
            
            
            以下权限策略对用户授予权限以运行以 Describe 开头的所有操作。这些操作显示有关 RDS 资源 (如数据库实例) 的信息。Resource 元素中的通配符 (*) 表示可对账户拥有的所有 Amazon Aurora 资源执行操作。
            
    - JSON
- 
            
     
        
- 
             
                
                {
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "AllowRDSDescribe",
         "Effect": "Allow",
         "Action": "rds:Describe*",
         "Resource": "*"
      }
   ]
}
 
 
 
允许用户创建使用指定数据库参数组和子网组的数据库实例
            
            以下权限策略授予权限以允许用户仅创建必须使用 mydbpg 数据库参数组和 mydbsubnetgroup 数据库子网组的数据库实例。
            
            
    - JSON
- 
            
     
        
- 
             
                
                {
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "VisualEditor0",
         "Effect": "Allow",
         "Action": "rds:CreateDBInstance",
         "Resource": [
            "arn:aws:rds:*:*:pg:mydbpg",
            "arn:aws:rds:*:*:subgrp:mydbsubnetgroup"
         ]
      }
   ]
}
 
 
 
您可以在基于身份的策略中使用条件,以便基于标签控制对 Aurora 资源的访问。以下策略所授予的权限允许对 stage 标签设置为 development 或 test 的实例执行 CreateDBSnapshot API 操作。
            
            
    - JSON
- 
            
     
        
- 
             
                
                {
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"AllowAnySnapshotName",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:snapshot:*"
      },
      {
         "Sid":"AllowDevTestToCreateSnapshot",
         "Effect":"Allow",
         "Action":[
            "rds:CreateDBSnapshot"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
 
 
 
以下策略所授予的权限允许对 stage 标签设置为 development 或 test 的实例执行 ModifyDBInstance API 操作。
            
    - JSON
- 
            
     
        
- 
             
                
                {
   "Version":"2012-10-17",
   "Statement":[
      {
         "Sid":"AllowChangingParameterOptionSecurityGroups",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
         ],
         "Resource": [
            "arn:aws:rds:*:123456789012:pg:*",
            "arn:aws:rds:*:123456789012:secgrp:*",
            "arn:aws:rds:*:123456789012:og:*"
         ]
      },
      {
         "Sid":"AllowDevTestToModifyInstance",
         "Effect":"Allow",
         "Action":[
            "rds:ModifyDBInstance"
         ],
         "Resource":"arn:aws:rds:*:123456789012:db:*",
         "Condition":{
            "StringEquals":{
                "rds:db-tag/stage":[
                  "development",
                  "test"
               ]
            }
         }
      }
   ]
}
            
            
 
 
 
防止用户删除数据库实例
            
            
            以下权限策略授予权限以防止用户删除特定数据库实例。例如,您可能想禁止任何非管理员用户删除您的生产数据库实例。
            
    - JSON
- 
            
     
        
- 
             
                
                {
   "Version": "2012-10-17",
   "Statement": [
      {
         "Sid": "DenyDelete1",
         "Effect": "Deny",
         "Action": "rds:DeleteDBInstance",
         "Resource": "arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance"
      }
   ]
}
 
 
 
拒绝对资源的所有访问
            
            您可以明确拒绝对资源的访问。拒绝策略优先于允许策略。以下策略明确拒绝用户管理资源的能力:
            
    - JSON
- 
            
     
        
- 
             
                
                {
   "Version": "2012-10-17",
   "Statement": [
      {
         "Effect": "Deny",
         "Action": "rds:*",
         "Resource": "arn:aws:rds:us-east-1:123456789012:db:mydb"
      }
   ]
}