

# 리소스 기반 정책을 사용하여 클러스터 생성
<a name="rbp-create-cluster"></a>

새 클러스터를 생성할 때 리소스 기반 정책을 연결하여 처음부터 액세스 제어가 이루어지도록 할 수 있습니다. 각 클러스터에는 클러스터에 직접 연결된 단일 인라인 정책이 있을 수 있습니다.

## AWS Management Console
<a name="rbp-create-cluster-console"></a>

**클러스터 생성 중에 리소스 기반 정책 추가**

1. AWS Management Console에 로그인하고 [https://console.aws.amazon.com/dsql/](https://console.aws.amazon.com/dsql)에서 Aurora DSQL 콘솔을 엽니다.

1. **클러스터 생성**을 선택합니다.

1. 필요에 따라 클러스터 이름, 태그 및 다중 리전 설정을 구성합니다.

1. **클러스터 설정** 섹션에서 **리소스 기반 정책** 옵션을 찾습니다.

1. **리소스 기반 정책 추가**를 켭니다.

1. JSON 편집기에서 정책 문서를 입력합니다. 예를 들어 퍼블릭 인터넷 액세스를 차단하려면 다음을 수행합니다.

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

1. **문 편집** 또는 **새 문 추가**를 사용하여 정책을 빌드할 수 있습니다.

1. 나머지 클러스터 구성을 완료하고 **클러스터를 생성**합니다.

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

클러스터를 생성할 때 `--policy` 파라미터를 사용하여 인라인 정책을 연결합니다.

```
aws dsql create-cluster --policy '{
    "Version": "2012-10-17",		 	 	 
    "Statement": [{
        "Effect": "Deny",
        "Principal": {"AWS": "*"},
        "Resource": "*",
        "Action": ["dsql:DbConnect", "dsql:DbConnectAdmin"],
        "Condition": { 
            "StringNotEquals": { "aws:SourceVpc": "vpc-123456" } 
        }
    }]
}'
```

## AWS SDK
<a name="rbp-create-cluster-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": { 
            "StringNotEquals": { "aws:SourceVpc": "vpc-123456" } 
        }
    }]
}

response = client.create_cluster(
    policy=json.dumps(policy)
)

print(f"Cluster created: {response['identifier']}")
```

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

```
import software.amazon.awssdk.services.dsql.DsqlClient;
import software.amazon.awssdk.services.dsql.model.CreateClusterRequest;
import software.amazon.awssdk.services.dsql.model.CreateClusterResponse;

DsqlClient client = DsqlClient.create();

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

CreateClusterRequest request = CreateClusterRequest.builder()
    .policy(policy)
    .build();

CreateClusterResponse response = client.createCluster(request);
System.out.println("Cluster created: " + response.identifier());
```

------