이 가이드는 ClickHouse Cloud 고객이 역할 기반 접근을 활용해 Amazon Simple Storage Service(S3)에 인증하고 데이터에 안전하게 액세스하는 방법을 설명합니다. 안전한 S3 액세스를 위한 설정에 들어가기 전에, 이 방식이 어떻게 작동하는지 이해하는 것이 중요합니다. 아래에는 고객의 AWS 계정 내 역할을 수임하여 ClickHouse 서비스가 비공개 S3 버킷에 액세스하는 방식의 개요가 나와 있습니다.

이 방식을 사용하면 고객은 액세스를 추가하거나 제거하기 위해 모든 버킷 정책을 일일이 수정할 필요 없이, 한 곳(수임된 역할의 IAM 정책)에서 S3 버킷에 대한 모든 액세스를 관리할 수 있습니다. 아래 섹션에서는 이를 설정하는 방법을 알아봅니다.
ClickHouse 서비스의 IAM role ARN 확인하기
-
ClickHouse Cloud 계정에 로그인하십시오.
-
통합을 생성할 ClickHouse 서비스를 선택하십시오.
-
설정 탭을 선택하십시오.
-
페이지 하단의 Network security information 섹션까지 스크롤하십시오.
-
아래와 같이 해당 서비스의 Service role ID (IAM) 값을 복사하십시오.

IAM assume role 설정하기
IAM assume role은 다음 두 가지 방법 중 하나로 설정할 수 있습니다.
CloudFormation 스택으로 배포
-
IAM role을 생성하고 관리할 권한이 있는 IAM 사용자로 웹 브라우저에서 AWS 계정에 로그인합니다.
-
다음 CloudFormation URL에 접속하여 CloudFormation 스택을 미리 채운 상태로 엽니다.
-
앞서 확인한 서비스의 **service role ID (IAM)**를 "ClickHouse Instance Roles" 입력란에 입력하거나 붙여넣습니다. service role ID는 Cloud Console에 표시된 값을 그대로 붙여넣으면 됩니다.
-
"Bucket Names" 입력란에 버킷 이름을 입력합니다. 버킷 URL이
https://ch-docs-s3-bucket.s3.eu-central-1.amazonaws.com/clickhouseS3/라면 버킷 이름은ch-docs-s3-bucket입니다.
- CloudFormation 스택을 구성합니다. 아래는 각 매개변수에 대한 추가 정보입니다.
| Parameter | Default Value | Description |
|---|---|---|
| RoleName | ClickHouseAccess-001 | ClickHouse Cloud가 S3 버킷에 액세스할 때 사용할 새 역할의 이름입니다. |
| Role Session Name | * | Role Session Name은 버킷을 추가로 보호하기 위한 공유 시크릿으로 사용할 수 있습니다. |
| ClickHouse Instance Roles | 이 보안 S3 통합을 사용할 수 있는 ClickHouse 서비스 IAM roles의 쉼표로 구분된 목록입니다. | |
| Bucket Access | Read | 제공된 버킷에 대한 액세스 수준을 설정합니다. |
| Bucket Names | 이 역할이 액세스할 수 있는 버킷 이름의 쉼표로 구분된 목록입니다. 참고: 전체 버킷 ARN이 아니라 버킷 이름을 사용하십시오. |
-
I acknowledge that AWS CloudFormation might create IAM resources with custom names. 확인란을 선택합니다.
-
오른쪽 하단의 Create stack 버튼을 클릭합니다.
-
CloudFormation 스택이 오류 없이 완료되었는지 확인합니다.
-
새로 생성된 스택을 선택한 다음 CloudFormation 스택의 Outputs 탭을 선택합니다.
-
이 통합에 대한 RoleArn 값을 복사합니다. 이 값이 S3 버킷에 액세스하는 데 필요합니다.

IAM role 수동 생성
-
IAM role을 생성하고 관리할 권한이 있는 IAM 사용자로 웹 브라우저에서 AWS 계정에 로그인합니다.
-
IAM Service Console로 이동합니다.
-
다음 IAM 및 신뢰 정책(Trust policy)을 사용해 새 IAM role을 생성합니다.
{ClickHouse_IAM_ARN}은 ClickHouse instance에 속한 IAM Role ARN으로 대체합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "{ClickHouse_IAM_ARN}"
},
"Action": "sts:AssumeRole"
}
]
}IAM 정책
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetBucketLocation",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::{BUCKET_NAME}"
],
"Effect": "Allow"
},
{
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::{BUCKET_NAME}/*"
],
"Effect": "Allow"
}
]
}- 생성이 완료되면 새 IAM Role Arn을 복사하십시오. 이 값은 S3 버킷에 액세스하는 데 필요합니다.
ClickHouseAccess 역할로 S3 버킷에 액세스하기
ClickHouse Cloud에서는 S3 테이블 함수의 일부로 extra_credentials를 지정할 수 있습니다.
아래는 위에서 복사한 새로 생성된 역할을 사용해 쿼리를 실행하는 예시입니다.
DESCRIBE TABLE s3('https://s3.amazonaws.com/BUCKETNAME/BUCKETOBJECT.csv','CSVWithNames',extra_credentials(role_arn = 'arn:aws:iam::111111111111:role/ClickHouseAccessRole-001'))다음은 role_session_name을 공유 시크릿으로 사용해 버킷의 데이터를 쿼리하는 예시 쿼리입니다.
role_session_name이 올바르지 않으면 작업이 실패합니다.
DESCRIBE TABLE s3('https://s3.amazonaws.com/BUCKETNAME/BUCKETOBJECT.csv','CSVWithNames',extra_credentials(role_arn = 'arn:aws:iam::111111111111:role/ClickHouseAccessRole-001', role_session_name = 'secret-role-name'))고급 작업 제어
더 엄격한 접근 제어를 위해 aws:SourceVpce 조건을 사용하여 ClickHouse Cloud의 VPC 엔드포인트에서 들어오는 요청만 허용하도록 버킷 정책을 제한할 수 있습니다. ClickHouse Cloud 리전의 VPC 엔드포인트를 확인하려면 터미널을 열고 다음을 실행하세요:
# Replace <your-region> with your ClickHouse Cloud region
curl -s https://api.clickhouse.cloud/static-ips.json | jq -r '.aws[] | select(.region == "<your-region>") | .s3_endpoints[]'그런 다음, 반환된 엔드포인트를 사용해 IAM 정책에 거부 규칙을 추가하십시오:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:List*",
"s3:Get*"
],
"Resource": [
"arn:aws:s3:::{BUCKET_NAME}",
"arn:aws:s3:::{BUCKET_NAME}/*"
]
},
{
"Sid": "VisualEditor3",
"Effect": "Deny",
"Action": [
"s3:GetObject"
],
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:SourceVpce": [
"{ClickHouse VPC ID from your S3 region}",
"{ClickHouse VPC ID from your S3 region}",
"{ClickHouse VPC ID from your S3 region}"
]
}
}
}
]
}ClickHouse Cloud 서비스의 엔드포인트 액세스에 대한 자세한 내용은 Cloud IP Addresses를 참조하십시오.