

# 为集群添加和编辑基于资源的策略
<a name="rbp-attach-policy"></a>

## AWS 管理控制台
<a name="rbp-attach-console"></a>

**向现有集群添加基于资源的策略**

1. 登录 AWS 管理控制台并打开 Aurora DSQL 控制台，网址为 [https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql)。

1. 从集群列表中选择集群以打开集群详细信息页面。

1. 选择**权限**选项卡。

1. 在**基于资源的策略**部分中，选择**添加策略**。

1. 在 JSON 编辑器中输入您的策略文档。您可以使用**编辑语句**或**添加新语句**来构建您的策略。

1. 选择**添加策略**。

**编辑现有的基于资源的策略**

1. 登录 AWS 管理控制台并打开 Aurora DSQL 控制台，网址为 [https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql)。

1. 从集群列表中选择集群以打开集群详细信息页面。

1. 选择**权限**选项卡。

1. 在**基于资源的策略**部分中，选择**编辑**。

1. 在 JSON 编辑器中修改策略文档。您可以使用**编辑语句**或**添加新语句**来更新您的策略。

1. 选择**保存更改**。

## AWS CLI
<a name="rbp-attach-cli"></a>

使用 `put-cluster-policy` 命令在集群上附加新策略或更新现有策略：

```
aws dsql put-cluster-policy --identifier your_cluster_id --policy '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Deny",
        "Principal": {"AWS": "*"},
        "Resource": "*",
        "Action": ["dsql:DbConnect", "dsql:DbConnectAdmin"],
        "Condition": { 
            "Null": { "aws:SourceVpc": "true" } 
        }
    }]
}'
```

## AWS SDK
<a name="rbp-attach-sdk"></a>

------
#### [ Python ]

```
import boto3
import json

client = boto3.client('dsql')

policy = {
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Deny",
        "Principal": {"AWS": "*"},
        "Resource": "*",
        "Action": ["dsql:DbConnect", "dsql:DbConnectAdmin"],
        "Condition": {
            "Null": {"aws:SourceVpc": "true"}
        }
    }]
}

response = client.put_cluster_policy(
    identifier='your_cluster_id',
    policy=json.dumps(policy)
)
```

------
#### [ Java ]

```
import software.amazon.awssdk.services.dsql.DsqlClient;
import software.amazon.awssdk.services.dsql.model.PutClusterPolicyRequest;

DsqlClient client = DsqlClient.create();

String policy = """
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [{
    "Effect": "Deny",
    "Principal": {"AWS": "*"},
    "Resource": "*",
    "Action": ["dsql:DbConnect", "dsql:DbConnectAdmin"],
    "Condition": {
      "Null": {"aws:SourceVpc": "true"}
    }
  }]
}
""";

PutClusterPolicyRequest request = PutClusterPolicyRequest.builder()
    .identifier("your_cluster_id")
    .policy(policy)
    .build();

client.putClusterPolicy(request);
```

------