

# S3 Tables의 액세스 관리
<a name="s3-tables-setting-up"></a>

S3 Tables 리소스에는 테이블 버킷과 여기에 들어 있는 테이블이 포함됩니다. 리소스를 생성한 AWS 계정의 루트 사용자(리소스 소유자)와 해당 계정 내에서 필요한 권한을 가진 AWS Identity and Access Management IAM 사용자는 자신이 생성한 리소스에 액세스할 수 있습니다. 리소스 소유자는 리소스에 액세스할 수 있는 다른 사용자와 리소스에서 이들이 수행할 수 있는 작업을 지정합니다. Amazon S3에는 다른 사람에게 내 S3 리소스에 대한 액세스 권한을 부여하는 데 사용할 수 있는 다양한 액세스 관리 도구가 있습니다. 테이블을 AWS Amazon SageMaker Lakehouse와 통합한 경우 Lake Formation을 사용하여 테이블 및 네임스페이스에 대한 세분화된 액세스를 관리할 수도 있습니다. 다음 주제에서는 S3 Tables의 리소스, IAM 작업 및 조건 키에 대한 개요를 제공합니다. 또한 S3 Tables용 리소스 기반 정책 및 ID 기반 정책 모두에 대한 예시도 제공합니다.

**Topics**
+ [리소스](#s3-tables-resources)
+ [S3 Tables에 대한 작업](#s3-tables-actions)
+ [S3 Tables의 조건 키](#s3-tables-conditionkeys)
+ [S3 Tables의 IAM ID 기반 정책](s3-tables-identity-based-policies.md)
+ [S3 Tables의 리소스 기반 정책](s3-tables-resource-based-policies.md)
+ [S3 Tables에 대한 AWS 관리형 정책](s3-tables-security-iam-awsmanpol.md)
+ [SQL 의미 체계를 사용하여 액세스 권한 부여](s3-tables-sql.md)
+ [Lake Formation을 사용하여 테이블 또는 데이터베이스에 대한 액세스 관리](grant-permissions-tables.md)

## 리소스
<a name="s3-tables-resources"></a>

S3 Tables 리소스에는 테이블 버킷과 여기에 들어 있는 테이블이 포함됩니다.
+ 테이블 버킷 - 테이블 버킷은 테이블을 위해 특별히 설계되었으며 범용 S3 버킷의 자체 관리형 테이블에 비해 초당 트랜잭션 수(TPS)가 높고 쿼리 처리량이 더 우수합니다. 테이블 버킷은 Amazon S3 범용 버킷과 동일한 내구성, 가용성, 확장성 및 성능 특성을 제공합니다.
+ 테이블 - 테이블 버킷의 테이블은 Apache Iceberg 형식으로 저장됩니다. Iceberg를 지원하는 쿼리 엔진에서 표준 SQL을 사용하여 이러한 테이블을 쿼리할 수 있습니다.

테이블 및 테이블 버킷의 Amazon 리소스 이름(ARN)에는 `s3tables` 네임스페이스, AWS 리전, AWS 계정 ID 및 버킷 이름이 포함됩니다. 테이블 및 테이블 버킷에 액세스하고 작업을 수행하려면 다음 ARN 형식을 사용해야 합니다.
+ 표 ARN 형식:

  `arn:aws:s3tables:us-west-2:111122223333:bucket/amzn-s3-demo-bucket/table/demo-tableID`

## S3 Tables에 대한 작업
<a name="s3-tables-actions"></a>

ID 기반 정책 또는 리소스 기반 정책에서 특정 IAM 위탁자에 대해 어떤 S3 Tables 작업을 허용 또는 거부할지 정의합니다. 테이블 작업은 버킷 및 테이블 수준 API 작업에 해당합니다. 모든 작업은 고유한 IAM 네임스페이스인 `s3tables`의 일부입니다.

정책에서 작업을 사용하면 일반적으로 이름이 같은 API 작업에 대한 액세스를 허용하거나 거부합니다. 그러나 경우에 따라 하나의 API 작업으로 둘 이상의 작업에 대한 액세스가 제어됩니다. 예를 들어 `s3tables:GetTableData` 작업에 `GetObject`, `ListParts` 및 `ListMultiparts` API 작업에 대한 권한이 포함됩니다.

다음은 테이블 버킷에 지원되는 작업입니다. IAM 정책 또는 리소스 정책의 `Action` 요소에서 다음 작업을 지정할 수 있습니다.


| 작업 | 설명 | 액세스 레벨 | 크로스 계정 액세스 | 
| --- | --- | --- | --- | 
| s3tables:CreateTableBucket | 테이블 버킷을 생성할 수 있는 권한을 부여합니다. | Write | 아니요 | 
| s3tables:GetTableBucket | 테이블 버킷 ARN, 테이블 버킷 이름 및 생성 날짜를 검색할 수 있는 권한을 부여합니다. | Write | 예 | 
| s3tables:ListTableBuckets | 이 계정의 모든 테이블 버킷을 나열할 수 있는 권한을 부여합니다. | Read | 아니요 | 
| s3tables:CreateNamespace | 테이블 버킷에 네임스페이스를 생성할 수 있는 권한을 부여합니다. | Write | 예 | 
| s3tables:GetNamespace | 네임스페이스 세부 정보를 검색할 수 있는 권한을 부여합니다. | Read | 예 | 
| s3tables:ListNamespaces | 테이블 버킷의 모든 네임스페이스를 나열할 수 있는 권한을 부여합니다. | Read | 예 | 
| s3tables:DeleteNamespace | 테이블 버킷에서 네임스페이스를 삭제할 수 있는 권한을 부여합니다. | Write | 예 | 
| s3tables:DeleteTableBucket | 버킷을 삭제할 수 있는 권한을 부여합니다. | Write | 예  | 
| s3tables:PutTableBucketPolicy | 버킷 정책을 추가하거나 교체할 수 있는 권한을 부여합니다. | Permissions Management | 아니요 | 
| s3tables:GetTableBucketPolicy | 버킷 정책을 검색할 수 있는 권한을 부여합니다. | Read | 아니요 | 
| s3tables:DeleteTableBucketPolicy | 버킷 정책을 삭제할 수 있는 권한을 부여합니다. | Permissions Management | 아니요 | 
| s3tables:GetTableBucketMaintenanceConfiguration | 테이블 버킷에 대한 유지 관리 구성을 검색할 수 있는 권한을 부여합니다. | Read | 예  | 
| s3tables:PutTableBucketMaintenanceConfiguration | 테이블 버킷에 대한 유지 관리 구성을 추가하거나 교체할 수 있는 권한을 부여합니다. | Write | 예 | 
| s3tables:PutTableBucketEncryption | 테이블 버킷에 대한 암호화 구성을 추가하거나 교체할 수 있는 권한을 부여합니다. | Write | 아니요 | 
| s3tables:GetTableBucketEncryption | 테이블 버킷에 대한 암호화 구성을 검색할 수 있는 권한을 부여합니다. | Read | 아니요 | 
| s3tables:DeleteTableBucketEncryption | 테이블 버킷에 대한 암호화 구성을 삭제할 수 있는 권한을 부여합니다. | Write | 아니요 | 

테이블에 다음 작업이 지원됩니다.


| 작업 | 설명 | 액세스 레벨 | 크로스 계정 액세스 | 
| --- | --- | --- | --- | 
| s3tables:GetTableMaintenanceConfiguration | 테이블에 대한 유지 관리 구성을 검색할 수 있는 권한을 부여합니다. | Read | 예 | 
| s3tables:PutTableMaintenanceConfiguration |  테이블에 대한 유지 관리 구성을 추가하거나 교체할 수 있는 권한을 부여합니다. | Write | 예 | 
| s3tables:PutTablePolicy | 테이블 정책을 추가하거나 교체할 수 있는 권한을 부여합니다. | Permissions Management | 아니요 | 
| s3tables:GetTablePolicy | 테이블 정책을 검색할 수 있는 권한을 부여합니다. | Read | 아니요 | 
| s3tables:DeleteTablePolicy | 테이블 정책을 삭제할 수 있는 권한을 부여합니다. | Permissions management | 아니요 | 
| s3tables:CreateTable | 테이블 버킷에 테이블을 생성할 수 있는 권한을 부여합니다. | Write | 예 | 
| s3tables:GetTable | 테이블 정보를 검색할 수 있는 권한을 부여합니다. | Read | 예 | 
| s3tables:GetTableMetadataLocation | 테이블 루트 포인터(메타데이터 파일)를 검색할 수 있는 권한을 부여합니다. | Read | 예  | 
| s3tables:ListTables | 테이블 버킷의 모든 테이블을 나열할 수 있는 권한을 부여합니다. | Read | 예  | 
| s3tables:RenameTable | 테이블 이름을 변경할 수 있는 권한을 부여합니다. | Write | 예  | 
| s3tables:UpdateTableMetadataLocation | 테이블 루트 포인터(메타데이터 파일)를 업데이트할 수 있는 권한을 부여합니다. | Write | 예  | 
| s3tables:GetTableData | 테이블 버킷에 저장된 테이블 메타데이터 및 데이터 객체를 읽을 수 있는 권한을 부여합니다. | Read | 예 | 
| s3tables:PutTableData | 테이블 버킷에 저장된 테이블 메타데이터 및 데이터 객체를 쓸 수 있는 권한을 부여합니다. | Write | 예 | 
| s3tables:GetTableEncryption  | 테이블에 대한 암호화 설정을 검색할 수 있는 권한을 부여합니다. | Write | 아니요 | 
| s3tables:PutTableEncryption  | 테이블에 암호화를 추가할 수 있는 권한을 부여합니다. | Write | 아니요 | 
| s3tables:DeleteTable | 테이블 버킷에서 테이블을 삭제하기 위한 권한 부여 | Write | 예 | 

테이블 수준 읽기 및 쓰기 작업을 수행하기 위해 S3 Tables은 `GetObject` 및 `PutObject`와 같은 Amazon S3 API 작업을 지원합니다. 다음 표에는 객체 수준 작업 목록이 나와 있습니다. 테이블에 읽기 및 쓰기 권한을 부여할 때 다음 작업을 사용합니다.


| 작업 | S3 객체 API | 
| --- | --- | 
| s3tables:GetTableData | GetObject, ListParts, HeadObject | 
| s3tables:PutTableData | PutObject, CreateMultipartUpload, CompleteMultipartUpload,  UploadPart, AbortMultipartUpload | 

예를 들어 사용자에게 `GetTableData` 권한이 있는 경우 메타데이터 파일, 매니페스트, 매니페스트 목록 파일, 파켓 데이터 파일 등 테이블과 연결된 모든 파일을 읽을 수 있습니다.

## S3 Tables의 조건 키
<a name="s3-tables-conditionkeys"></a>

S3 Tables은 [AWS 전역 조건 컨텍스트 키](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_condition-keys.html)를 지원합니다.

또한 S3 Tables은 액세스 정책에 사용할 수 있는 다음과 같은 조건 키를 정의합니다.


| 조건 키 | 설명 | 형식 | 
| --- | --- | --- | 
|  s3tables:tableName |  테이블 버킷의 테이블 이름을 기준으로 액세스를 필터링합니다.`s3tables:tableName` 조건 키를 사용하여 이 이름 조건을 충족하는 테이블로만 사용자 또는 애플리케이션 액세스를 제한하는 IAM 또는 테이블 버킷 정책을 작성할 수 있습니다.  `s3tables:tableName` 조건 키를 사용하여 액세스를 제어하는 경우 테이블 이름을 변경하면 이러한 정책에 영향을 미칠 수 있습니다. 예시 값: "s3tables:tableName":"department\$1"  | String | 
|  s3tables:namespace |  테이블 버킷에 생성된 네임스페이스를 기준으로 액세스를 필터링합니다. `s3tables:namespace` 조건 키를 사용하여 특정 네임스페이스의 일부인 테이블로 사용자 또는 애플리케이션 액세스를 제한하는 IAM, 테이블 또는 테이블 버킷 정책을 작성할 수 있습니다. *예시 값:* `"s3tables:namespace":"hr" `  `s3tables:namespace` 조건 키를 사용하여 액세스를 제어하는 경우 네임스페이스를 변경하면 이러한 정책에 영향을 미칠 수 있습니다.  | String | 
|  s3tables:SSEAlgorithm |  테이블을 암호화하는 데 사용되는 서버 측 암호화 알고리즘을 기준으로 액세스를 필터링합니다. `s3tables:SSEAlgorithm` 조건 키를 사용하여 특정 암호화 유형으로 암호화된 테이블로 사용자 또는 애플리케이션 액세스를 제한하는 IAM, 테이블 또는 테이블 버킷 정책을 작성할 수 있습니다. *예시 값:* `"s3tables:SSEAlgorithm":"aws:kms" `  `s3tables:SSEAlgorithm` 조건 키를 사용하여 액세스를 제어하는 경우 암호화를 변경하면 이러한 정책에 영향을 미칠 수 있습니다.  | String | 
|  s3tables:KMSKeyArn |  테이블을 암호화하는 데 사용되는 키의 AWS KMS 키 ARN을 기준으로 액세스를 필터링합니다. `s3tables:KMSKeyArn` 조건 키를 사용하여 특정 KSM 키를 통해 암호화된 테이블로 사용자 또는 애플리케이션 액세스를 제한하는 IAM, 테이블 또는 테이블 버킷 정책을 작성할 수 있습니다. `s3tables:KMSKeyArn` 조건 키를 사용하여 액세스를 제어하는 경우 KSM 키를 변경하면 이러한 정책에 영향을 미칠 수 있습니다.  | ARN | 

# S3 Tables의 IAM ID 기반 정책
<a name="s3-tables-identity-based-policies"></a>

기본적으로 사용자 및 역할에는 테이블 및 테이블 버킷을 생성하거나 수정할 수 있는 권한이 없습니다. 이들은 S3 콘솔, AWS Command Line Interface(AWS CLI) 또는 Amazon S3 REST API를 사용해서도 작업을 수행할 수 없습니다. 테이블 버킷 및 테이블을 생성하고 액세스하려면 AWS Identity and Access Management(IAM) 관리자가 IAM 역할 또는 사용자에게 필요한 권한을 부여해야 합니다. 이러한 예제 JSON 정책 문서를 사용하여 IAM ID 기반 정책을 생성하는 방법을 알아보려면 *IAM 사용 설명서*의 [IAM 정책 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create-console.html)을 참조하세요.

다음 주제에는 IAM ID 기반 정책의 예가 포함되어 있습니다. 다음 예시 정책을 사용하려면 *사용자 입력 자리 표시자*를 실제 정보로 바꾸세요.

**Topics**
+ [예시 1: 테이블 버킷 생성 및 사용에 대한 액세스 허용](#example-1-s3-tables-identity-based-policies)
+ [예시 2: 테이블 버킷에서 테이블 생성 및 사용에 대한 액세스 허용](#example-2-s3-tables-identity-based-policies)

## 예시 1: 테이블 버킷 생성 및 사용에 대한 액세스 허용
<a name="example-1-s3-tables-identity-based-policies"></a>

**.**

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowBucketActions",
            "Effect": "Allow",
            "Action": [
                "s3tables:CreateTableBucket",
                "s3tables:PutTableBucketPolicy",
                "s3tables:GetTableBucketPolicy",
                "s3tables:ListTableBuckets",
                "s3tables:GetTableBucket"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
        }
    ]
}
```

------

## 예시 2: 테이블 버킷에서 테이블 생성 및 사용에 대한 액세스 허용
<a name="example-2-s3-tables-identity-based-policies"></a>

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowBucketActions",
            "Effect": "Allow",
            "Action": [
                "s3tables:GetTableBucket",
                "s3tables:ListTables",
                "s3tables:CreateTable",
                "s3tables:PutTableData",
                "s3tables:GetTableData",
                "s3tables:GetTable",
                "s3tables:GetTableMetadataLocation",
                "s3tables:UpdateTableMetadataLocation",
                "s3tables:GetNamespace",
                "s3tables:CreateNamespace",
                "s3tables:ListNamespaces"
            ],
            "Resource": [
                "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket",
                "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/table/*"
            ]
        }
    ]
}
```

------

# S3 Tables의 리소스 기반 정책
<a name="s3-tables-resource-based-policies"></a>

S3 Tables은 테이블 버킷 및 테이블에 대한 액세스를 관리하기 위한 리소스 기반 정책, 즉 테이블 버킷 정책 및 테이블 정책을 제공합니다. 테이블 버킷 정책을 사용하여 테이블 버킷, 네임스페이스 또는 테이블 수준에서 API 액세스 권한을 부여할 수 있습니다. 테이블 버킷에 연결된 권한은 정책 정의에 따라 버킷의 모든 테이블 또는 버킷의 특정 테이블에 적용될 수 있습니다. 테이블 정책을 사용하여 테이블 수준에서 권한을 부여할 수 있습니다.

S3 Tables이 요청을 수신하면 먼저 요청자에게 필요한 권한이 있는지 확인합니다. 요청을 승인할지 결정할 때 모든 관련 액세스 정책, 사용자 정책 및 리소스 기반 정책(IAM 사용자 정책, IAM 역할 정책, 테이블 버킷 정책 및 테이블 정책)을 평가합니다. 예를 들어 테이블 버킷 정책이 버킷의 테이블(`DeleteTable` 포함)에서 모든 작업을 수행할 수 있는 권한을 사용자에게 부여하지만 개별 테이블에 모든 사용자에 대해 `DeleteTable` 작업을 거부하는 테이블 정책이 있는 경우 사용자는 테이블을 삭제할 수 없습니다.

다음 주제에는 테이블 및 테이블 버킷 정책의 예가 포함되어 있습니다. 이러한 정책을 사용하려면 *사용자 입력 자리 표시자*를 실제 정보로 바꾸세요.

**참고**  
테이블을 수정할 수 있는 권한을 부여하는 모든 정책에는 `GetTableMetadataLocation`이 테이블 루트 파일에 액세스할 수 있는 권한이 포함되어야 합니다. [자세한 내용은 `GetTableMetadataLocation` 단원을 참조하세요.](https://docs.aws.amazon.com/AmazonS3/latest/API/API_s3TableBuckets_GetTableMetadataLocation.html)
테이블에서 쓰기 또는 삭제 활동을 수행할 때마다 액세스 정책에 `UpdateTableMetadataLocation`에 대한 권한을 포함합니다.
버킷 수준 작업에 대한 액세스를 관리하기 위해서는 테이블 버킷 정책을 사용하고 테이블 수준 작업에 대한 액세스를 관리하기 위해서는 테이블 정책을 사용하는 것이 좋습니다. 여러 테이블에서 동일한 권한 세트를 정의하려는 경우 테이블 버킷 정책을 사용하는 것이 좋습니다.

**Topics**
+ [예 1: 계정의 버킷에서 `PutBucketMaintenanceConfiguration`에 대한 액세스를 허용하는 테이블 버킷 정책](#table-bucket-policy-1)
+ [예 2: `hr` 네임스페이스에 저장된 테이블에 대한 읽기(SELECT) 액세스를 허용하는 테이블 버킷 정책](#table-bucket-policy-2)
+ [예 3: 사용자가 테이블을 삭제하도록 허용하는 테이블 정책](#table-bucket-policy-3)

## 예 1: 계정의 버킷에서 `PutBucketMaintenanceConfiguration`에 대한 액세스를 허용하는 테이블 버킷 정책
<a name="table-bucket-policy-1"></a>

다음 테이블 버킷 정책 예시는 `PutBucketMaintenanceConfiguration`에 대한 액세스를 허용하여 IAM `data steward`가 계정의 모든 버킷에서 참조되지 않은 객체를 삭제할 수 있도록 허용합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/datasteward"
            },
            "Action": [
                "s3tables:PutTableBucketMaintenanceConfiguration"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/*"
        }
    ]
}
```

------

## 예 2: `hr` 네임스페이스에 저장된 테이블에 대한 읽기(SELECT) 액세스를 허용하는 테이블 버킷 정책
<a name="table-bucket-policy-2"></a>

다음 테이블 버킷 정책 예시에서는 AWS 계정 ID `123456789012`의 사용자인 Jane이 테이블 버킷의 `hr` 네임스페이스에 저장된 테이블에 액세스할 수 있도록 허용합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::123456789012:user/Jane"
            },
            "Action": [
                "s3tables:GetTableData",
                "s3tables:GetTableMetadataLocation"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-table-bucket/table/*",
            "Condition": {
                "StringLike": {
                    "s3tables:namespace": "hr"
                }
            }
        }
    ]
}
```

------

## 예 3: 사용자가 테이블을 삭제하도록 허용하는 테이블 정책
<a name="table-bucket-policy-3"></a>

다음 테이블 정책 예시는 IAM 역할 `data steward`가 테이블을 삭제하도록 허용합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Id": "DeleteTable",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::111122223333:role/datasteward"
            },
            "Action": [
                "s3tables:DeleteTable",
                "s3tables:UpdateTableMetadataLocation",
                "s3tables:PutTableData",
                "s3tables:GetTableMetadataLocation"
            ],
            "Resource": "arn:aws:s3tables:us-east-1:111122223333:bucket/amzn-s3-demo-bucket/table/tableUUID"
        }
    ]
}
```

------

# S3 Tables에 대한 AWS 관리형 정책
<a name="s3-tables-security-iam-awsmanpol"></a>

AWS 관리형 정책은 AWS에 의해 생성되고 관리되는 독립 실행형 정책입니다. AWS 관리형 정책은 사용자, 그룹 및 역할에 권한 할당을 시작할 수 있도록 많은 일반 사용 사례에 대한 권한을 제공하도록 설계되었습니다.

AWS 관리형 정책은 모든 AWS 고객이 사용할 수 있기 때문에 특정 사용 사례에 대해 최소 권한을 부여하지 않을 수 있습니다. 사용 사례에 고유한 [고객 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#customer-managed-policies)을 정의하여 권한을 줄이는 것이 좋습니다.

AWS 관리형 정책에서 정의한 권한은 변경할 수 없습니다. 만약 AWS가 AWS 관리형 정책에 정의된 권한을 업데이트할 경우 정책이 연결되어 있는 모든 보안 주체 ID(사용자, 그룹 및 역할)에도 업데이트가 적용됩니다. 새 AWS 서비스을(를) 시작하거나 새 API 작업을 기존 서비스에 이용하는 경우, AWS가 AWS 관리형 정책을 업데이트할 가능성이 높습니다.

자세한 내용은 *IAM 사용자 설명서*의 [AWS 관리형 정책](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_managed-vs-inline.html#aws-managed-policies)을 참조하세요.

## AWS 관리형 정책:AmazonS3TablesFullAccess .
<a name="s3-tables-security-iam-awsmanpol-amazons3tablesfullaccess"></a>

`AmazonS3TablesFullAccess` 정책을 IAM ID에 연결할 수 있습니다. 이 정책은 Amazon S3 Tables에 대한 전체 액세스를 허용하는 권한을 부여합니다. 이 정책에 대한 자세한 내용은 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesFullAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesFullAccess.html) 섹션을 참조하세요.

## AWS 관리형 정책:AmazonS3TablesReadOnlyAccess .
<a name="s3-tables-security-iam-awsmanpol-amazons3readonlyaccess"></a>

`AmazonS3TablesReadOnlyAccess` 정책을 IAM ID에 연결할 수 있습니다. 이 정책은 Amazon S3 Tables에 대한 읽기 전용 액세스를 허용하는 권한을 부여합니다. 이 정책에 대한 자세한 내용은 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesReadOnlyAccess.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesReadOnlyAccess.html) 섹션을 참조하세요.

## AWS 관리형 정책:AmazonS3TablesLakeFormationServiceRole .
<a name="s3-tables-security-iam-awsmanpol-amazons3tableslakeformationservicerole"></a>

`AmazonS3TablesLakeFormationServiceRole` 정책을 IAM ID에 연결할 수 있습니다. 이 정책은 AWS Lake Formation 서비스 역할이 S3 Tables에 액세스할 수 있는 권한을 부여합니다. AWS KMS 권한은 Lake Formation이 암호화된 테이블에 액세스할 수 있도록 하는 데 사용됩니다. 이 정책에 대한 자세한 내용은 [https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesLakeFormationServiceRole.html](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AmazonS3TablesLakeFormationServiceRole.html) 섹션을 참조하세요.

## AWS 관리형 정책에 대한 Amazon S3 Tables 업데이트
<a name="s3-tables-security-iam-awsmanpol-updates"></a>

S3 Tables에서 이러한 변경 내용을 추적하기 시작한 이후부터 Amazon S3 Tables의 AWS 관리형 정책 업데이트에 대한 세부 정보를 봅니다.


| 변경 | 설명 | 날짜 | 
| --- | --- | --- | 
|  Amazon S3 Tables가 `AmazonS3TablesFullAccess`를 업데이트했습니다.  |  S3 Tables에서 `AmazonS3TablesFullAccess`라는 AWS 관리형 정책이 업데이트되었습니다. 이 업데이트는 S3 Tables 복제 서비스에 역할을 전달할 수 있는 권한을 부여합니다.  |  2025년 12월 2일  | 
|  Amazon S3 Tables에 `AmazonS3TablesLakeFormationServiceRole`를 추가했습니다.  |  S3 Tables에 `AmazonS3TablesLakeFormationServiceRole`라는 새로운 AWS 관리형 정책을 추가했습니다. 이 정책은 Lake Formation 서비스 역할이 S3 Tables에 액세스할 수 있는 권한을 부여합니다.  | 2025년 5월 19일 | 
|  Amazon S3 Tables에 `AmazonS3TablesFullAccess`를 추가했습니다.  |  S3 Tables에 `AmazonS3TablesFullAccess`라는 새로운 AWS 관리형 정책을 추가했습니다. 이 정책은 Amazon S3 Tables에 대한 전체 액세스를 허용하는 권한을 부여합니다.  | 2024년 12월 3일 | 
|  Amazon S3 Tables에 `AmazonS3TablesReadOnlyAccess`를 추가했습니다.  |  S3 Tables에 `AmazonS3TablesReadOnlyAccess`라는 새로운 AWS 관리형 정책을 추가했습니다. 이 정책은 Amazon S3 Tables에 대한 읽기 전용 액세스를 허용하는 권한을 부여합니다.  | 2024년 12월 3일 | 
|  Amazon S3 Tables에서 변경 사항 추적을 시작했습니다.  |  Amazon S3 Tables에서 AWS 관리형 정책에 대한 변경 사항 추적을 시작했습니다.  | 2024년 12월 3일 | 

# SQL 의미 체계를 사용하여 액세스 권한 부여
<a name="s3-tables-sql"></a>

테이블 및 테이블 버킷 정책에서 SQL 의미 체계를 사용하여 테이블에 권한을 부여할 수 있습니다. 사용할 수 있는 SQL 의미 체계의 예로는 `CREATE`, `INSERT`, `DELETE`, `UPDATE` 및 `ALTER`가 있습니다. 다음 표에는 사용자에게 권한을 부여하는 데 사용할 수 있는 SQL 의미 체계와 관련된 API 작업 목록이 나와 있습니다.

S3 Tables은 SQL 의미 체계를 사용하는 권한을 부분적으로 지원합니다. 예를 들어 `CreateTable` API는 테이블 버킷에 빈 테이블만 생성합니다. 테이블 스키마를 설정하려면 `UpdateTableMetadata`, `PutTableData` 및 `GetTableMetadataLocation`과 같은 추가 권한이 필요합니다. 또한 이러한 추가 권한을 제공한다는 것은 사용자에게 테이블에 행을 삽입할 수 있는 액세스 권한도 부여한다는 뜻입니다. SQL 의미 체계만을 기반으로 액세스를 제어하려면 S3 Tables과 통합된 [AWS Lake Formation](https://docs.aws.amazon.com/lake-formation/latest/dg/what-is-lake-formation.html) 또는 서드 파티 솔루션을 사용하는 것이 좋습니다.


| 테이블 수준 활동 | IAM 작업 | 
| --- | --- | 
| SELECT | s3tables:GetTableData, s3tables:GetTableMetadataLocation | 
| CREATE | s3tables:CreateTable, s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation,  | 
| INSERT | s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation | 
| UPDATE | s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation | 
| ALTER,RENAME | s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation, s3tables:RenameTable  | 
| DELETE,DROP | s3tables:DeleteTable, s3tables:UpdateTableMetadataLocation, s3tables:PutTableData, s3tables:GetTableMetadataLocation  | 

**참고**  
테이블 버킷에서 테이블을 삭제하려면 `s3tables:DeleteTable` 권한이 필요합니다. 이 권한을 사용하면 테이블과 연결된 모든 데이터 및 메타데이터를 영구적으로 제거할 수 있습니다. 삭제 작업은 취소할 수 없으므로 이 권한을 주의해서 사용하세요.

# Lake Formation을 사용하여 테이블 또는 데이터베이스에 대한 액세스 관리
<a name="grant-permissions-tables"></a>

테이블 버킷이 AWS 분석 서비스와 통합되면 Lake Formation은 테이블에 대한 액세스를 관리하고 각 IAM 보안 주체(사용자 또는 역할)에게 작업을 수행할 수 있는 권한을 부여해야 합니다. Lake Formation은 Data Catalog 리소스에 대한 세분화된 액세스 제어를 활성화하는 자체 권한 모델(Lake Formation 권한)을 사용합니다.

자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [Lake Formation 권한 개요](https://docs.aws.amazon.com//lake-formation/latest/dg/lf-permissions-overview.html)를 참조하십시오.

AWS Lake Formation에는 다음과 같은 두 가지 주요 권한 유형이 있습니다.

1. 메타데이터 액세스 권한은 Data Catalog에서 메타데이터 데이터베이스 및 테이블을 생성하고, 읽고, 업데이트하고, 삭제할 수 있는 기능을 제어합니다.

1. 기본 데이터 액세스 권한은 Data Catalog 리소스가 가리키는 기본 Amazon S3 위치에 데이터를 읽고 쓰는 기능을 제어합니다.

Lake Formation은 자체 권한 모델과 IAM 권한 모델의 조합을 사용하여 Data Catalog 리소스 및 기본 데이터에 대한 액세스를 제어합니다.
+ Data Catalog 리소스 또는 기본 데이터에 대한 액세스 요청이 성공하려면 요청이 IAM과 Lake Formation의 권한 검사를 모두 통과해야 합니다.
+ IAM 권한은 Lake Formation 및 AWS Glue API 및 리소스에 대한 액세스를 제어하는 반면, Lake Formation 권한은 Data Catalog 리소스, Amazon S3 위치 및 기본 데이터에 대한 액세스를 제어합니다.

Lake Formation 권한은 권한이 부여된 리전에서만 적용되며, 위탁자는 Lake Formation 권한을 부여받으려면 필요한 권한이 있는 데이터 레이크 관리자 또는 다른 위탁자의 승인을 받아야 합니다.

**참고**  
테이블 버킷 통합을 수행한 사용자인 경우 테이블에 대한 Lake Formation 권한이 이미 있습니다. 테이블에 액세스할 유일한 위탁자인 경우 이 단계를 건너뛸 수 있습니다. 테이블에 대한 Lake Formation 권한을 다른 IAM 위탁자에게 부여하기만 하면 됩니다. 이렇게 하면 다른 위탁자가 쿼리를 실행할 때 테이블에 액세스할 수 있습니다. 자세한 내용은 [테이블 또는 데이터베이스에 대한 Lake Formation 권한 부여](#grant-lf-table) 섹션을 참조하세요.

## 테이블 또는 데이터베이스에 대한 Lake Formation 권한 부여
<a name="grant-lf-table"></a>

Lake Formation 콘솔 또는 AWS CLI를 통해 위탁자에게 테이블 버킷의 테이블 또는 데이터베이스에 대한 Lake Formation 권한을 부여할 수 있습니다.

**참고**  
데이터 카탈로그 리소스에 대한 Lake Formation 권한을 외부 계정에 부여하거나 다른 계정의 IAM 보안 주체에 직접 부여하면 Lake Formation은 AWS Resource Access Manager(AWS RAM) 서비스를 사용하여 리소스를 공유합니다. 피부여자 계정이 부여자 계정과 동일한 조직에 속해 있는 경우, 피부여자는 공유 리소스를 즉시 사용할 수 있습니다. 피부여자 계정이 같은 조직에 속해 있지 않은 경우, AWS RAM은 피부여자 계정에 리소스 부여를 수락하거나 거부하라는 초대를 보냅니다. 그런 다음 공유 리소스를 사용할 수 있게 하려면 피부여자 계정의 데이터 레이크 관리자가 AWS RAM 콘솔 또는 AWS CLI를 사용하여 초대를 수락해야 합니다. 계정 간 데이터 공유에 대한 자세한 내용은 *AWS Lake Formation개발자 안내서*의 [Lake Formation에서의 계정 간 데이터 공유](https://docs.aws.amazon.com/lake-formation/latest/dg/cross-account-permissions.html)를 참조하세요.

------
#### [ Console ]

1. [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)에서 AWS Lake Formation 콘솔을 열고 데이터 레이크 관리자로 로그인합니다. 데이터 레이크 관리자 생성 방법에 대한 자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [데이터 레이크 관리자 생성](https://docs.aws.amazon.com/lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)을 참조하세요.

1. 탐색 창에서 **데이터 권한**을 선택한 다음 **권한 부여**를 선택합니다.

1. **권한 부여** 페이지의 **주체**에서 다음 중 하나를 수행합니다.
   + Amazon Athena 또는 Amazon Redshift에서 **IAM 사용자 및 역할**을 선택하고 쿼리에 사용하는 IAM 위탁자를 선택합니다.
   + Amazon Data Firehose에서 **IAM 사용자 및 역할**을 선택하고 테이블로 스트리밍하기 위해 생성한 서비스 역할을 선택합니다.
   + Quick에서 **SAML 사용자 및 그룹**을 선택하고 Quick 관리자 사용자의 Amazon 리소스 이름(ARN)을 입력합니다.
   + AWS Glue Iceberg REST 엔드포인트 액세스에 대해 **IAM 사용자 및 역할**을 선택한 다음 클라이언트용으로 만든 IAM 역할을 선택합니다. 자세한 내용은 [클라이언트에 대한 IAM 역할 생성](s3-tables-integrating-glue-endpoint.md#glue-endpoint-create-iam-role) 섹션을 참조하세요.

1. **LF 태그 또는 카탈로그 리소스**에서 **명명된 데이터 카탈로그 리소스**를 선택합니다.

1. **카탈로그**에서 테이블 버킷을 통합할 때 생성한 하위 카탈로그를 선택합니다. 예를 들어, `account-id:s3tablescatalog/amzn-s3-demo-bucket`입니다.

1. **데이터베이스**에서 생성한 S3 테이블 버킷 네임스페이스를 선택합니다.

1. (옵션) **테이블**에서 테이블 버킷에서 생성한 S3 테이블을 선택합니다.
**참고**  
Athena 쿼리 편집기에서 새 테이블을 생성하는 경우 테이블을 선택하지 마세요.

1. 다음 중 하나를 수행하세요.
   + 이전 단계에서 테이블을 지정한 경우 **테이블 권한**에서 **슈퍼**를 선택합니다.
   + 이전 단계에서 테이블을 지정하지 않은 경우 **데이터베이스 권한**으로 이동합니다. 교차 계정 데이터 공유의 경우 **슈퍼**를 선택하여 다른 위탁자에게 데이터베이스에 대한 모든 권한을 부여할 수 없습니다. 대신 **설명**과 같이 더 세분화된 권한을 선택합니다.

1. **권한 부여**를 선택합니다.

------
#### [ CLI ]

1. 데이터 레이크 관리자로서 다음 AWS CLI 명령을 실행 중인지 확인합니다. 자세한 내용은 *AWS Lake Formation 개발자 안내서*의 [데이터 레이크 관리자 생성](https://docs.aws.amazon.com//lake-formation/latest/dg/initial-lf-config.html#create-data-lake-admin)을 참조하세요.

1. 다음 명령을 실행하여 S3 테이블 버킷의 테이블에 대한 Lake Formation 권한을 테이블에 액세스할 IAM 위탁자에 부여합니다. 이 예제를 사용하려면 *`user input placeholders`*를 사용자의 정보로 대체합니다.

   ```
   aws lakeformation grant-permissions \
   --region us-east-1 \
   --cli-input-json \
   '{
       "Principal": {
           "DataLakePrincipalIdentifier": "user or role ARN, for example, arn:aws:iam::account-id:role/example-role"
       },
       "Resource": {
           "Table": {
               "CatalogId": "account-id:s3tablescatalog/amzn-s3-demo-bucket",
               "DatabaseName": "S3 table bucket namespace, for example, test_namespace",
               "Name": "S3 table bucket table name, for example test_table"
           }
       },
       "Permissions": [
           "ALL"
       ]
   }'
   ```

------