

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# Amazon Redshift 데이터 공유에서 데이터에 대한 권한 관리
<a name="data-sharing-redshift"></a>

AWS Lake Formation을 사용하면 Amazon Redshift의 데이터 공유에서 데이터를 안전하게 관리할 수 있습니다. Amazon Redshift는 AWS 클라우드에서 완벽하게 관리되는 페타바이트급 데이터 웨어하우스 서비스입니다. Amazon Redshift는 데이터 공유 기능을 사용하여 AWS 계정 간에 데이터를 서로 공유할 수 있도록 지원합니다. Amazon Redshift 데이터 공유에 대한 자세한 내용은 [Amazon Redshift에서 데이터 공유 개요](https://docs.aws.amazon.com/redshift/latest/dg/data_sharing_intro.html)를 참조하세요.

Amazon Redshift에서 생산자 클러스터 관리자는 데이터 공유를 생성하고 이를 데이터 레이크 관리자와 공유합니다. 데이터 레이크 관리자를 생성하는 방법에 대한 단계별 지침은 [데이터 레이크 관리자 생성](initial-lf-config.md#create-data-lake-admin) 섹션을 참조하세요.

데이터 레이크 관리자가 데이터 공유를 수락한 후에는 특정 데이터 공유를 위한 AWS Glue Data Catalog 데이터베이스를 생성해야 합니다. 이는 Lake Formation 권한을 사용하여 액세스를 제어할 수 있도록 하기 위한 것입니다. Lake Formation은 각 데이터 공유를 해당하는 데이터 카탈로그 데이터베이스에 매핑합니다. 이러한 데이터베이스는 데이터 카탈로그에서 페더레이션된 데이터베이스로 표시됩니다.

데이터베이스가 데이터 카탈로그 외부의 항목을 가리키는 경우 이러한 데이터베이스를 *페더레이션형 데이터베이스*라고 합니다. Amazon Redshift 데이터 공유의 테이블 및 보기는 데이터 카탈로그에 개별 테이블로 나열됩니다. Lake Formation을 사용하여 동일한 계정 또는 다른 계정 내에서 선택된 IAM 보안 주체 및 SAML 사용자와 페더레이션된 데이터베이스를 공유할 수 있습니다. 행 및 열 필터 식을 포함하여 특정 데이터에 대한 액세스를 제한할 수도 있습니다. 자세한 내용은 [Lake Formation의 데이터 필터링 및 셀 수준 보안](data-filtering.md) 섹션을 참조하세요.

 사용자에게 Amazon Redshift 데이터 공유에 대한 액세스를 제공하려면 다음을 수행해야 합니다.

1. Lake Formation 권한을 활성화하도록 **데이터 카탈로그 설정**을 업데이트합니다.

1. Amazon Redshift 생산자 클러스터 관리자의 데이터 공유 초대를 수락하고 Lake Formation에 데이터 공유를 등록합니다.

   이 단계를 완료한 후에는 Lake Formation 데이터 카탈로그 내에서 데이터 공유를 관리할 수 있습니다.

1. 페더레이션된 데이터베이스를 생성하고 해당 데이터베이스에 대한 권한을 정의합니다.

1. 사용자에게 데이터베이스 및 테이블에 대한 권한을 부여합니다. 전체 데이터베이스 또는 테이블의 하위 집합을 같은 계정이나 다른 계정의 사용자와 공유할 수 있습니다.

제한 사항은 [Amazon Redshift 데이터 공유 제한 사항](notes-rs-datashare.md) 섹션을 참조하세요.

**Topics**
+ [Amazon Redshift 데이터 공유에 대한 권한 설정을 위한 필수 조건](redshift-ds-prereqs.md)
+ [Amazon Redshift 데이터 공유에 대한 권한 설정](setup-ds-perms.md)
+ [페더레이션된 데이터베이스 쿼리](qerying-fed-db.md)

# Amazon Redshift 데이터 공유에 대한 권한 설정을 위한 필수 조건
<a name="redshift-ds-prereqs"></a>

**기본 데이터 카탈로그 설정 업데이트**  
데이터 카탈로그 리소스에 대한 Lake Formation 권한을 활성화하려면 Lake Formation에서 기본 **데이터 카탈로그 설정**을 비활성화하는 것이 좋습니다. 자세한 내용은 [기본 권한 모델 변경 또는 하이브리드 액세스 모드 사용](initial-lf-config.md#setup-change-cat-settings) 섹션을 참조하세요.

**권한 업데이트**  
 Lake Formation에서 Amazon Redshift 데이터 공유를 수락하려면 데이터 레이크 관리자(`AWSLakeFormationDataAdmin`) 권한 외에도 다음과 같은 권한이 필요합니다.
+ `glue:PassConnection on aws:redshift`
+ `redshift:AssociateDataShareConsumer`
+ `redshift:DescribeDataSharesForConsumer`
+ `redshift:DescribeDataShares`

데이터 레이크 관리자 IAM 사용자는 암시적으로 다음과 같은 권한을 가집니다.
+ data\$1location\$1access
+ create\$1database 
+ lakefomation:registerResource

# Amazon Redshift 데이터 공유에 대한 권한 설정
<a name="setup-ds-perms"></a>

 이 주제에서는 데이터 공유 초대를 수락하고, 페더레이션된 데이터베이스를 생성하고, 권한을 부여하기 위해 따라야 하는 단계를 설명합니다. Lake Formation 콘솔 또는 AWS Command Line Interface(AWS CLI)를 사용할 수 있습니다. 이 주제의 예제는 동일한 계정의 생산자 클러스터, 데이터 카탈로그 및 데이터 소비자를 보여줍니다.

Lake Formation 크로스 계정 기능에 대해 자세히 알아보려면 [Lake Formation에서의 교차 계정 데이터 공유](cross-account-permissions.md) 섹션을 참조하세요.

**데이터 공유에 대한 권한을 설정하려면**

1. 데이터 공유 초대를 검토하고 수락합니다.

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

   1.  [https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)에서 데이터 레이크 관리자로 Lake Formation 콘솔에 로그인합니다. **데이터 공유** 페이지로 이동합니다.

   1. 액세스 권한이 있는 데이터 공유를 검토합니다. **상태** 열은 데이터 공유에 대한 현재 참여 상태를 나타냅니다. **보류 중** 상태는 데이터 공유에 추가되었지만 아직 참여를 수락하지 않았거나 초대를 거부했음을 나타냅니다.

   1.  데이터 공유 초대에 응답하려면 데이터 공유 이름을 선택하고 **초대 검토**를 선택합니다. **데이터 공유 수락 또는 거부**에서 초대 세부 정보를 검토합니다. 초대를 수락하려면 **수락**을, 초대를 거부하려면 **거부**를 선택합니다. 초대를 거부하면 데이터 공유에 액세스할 수 없습니다.

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

   다음 예제는 초대를 보고, 수락하고, 등록하는 방법을 보여 줍니다. AWS 계정 ID를 유효한 AWS 계정 ID로 바꿉니다. `data-share-arn`을 데이터 공유를 참조하는 실제 Amazon 리소스 이름(ARN)으로 바꿉니다.

   1. 보류 중인 초대를 봅니다.

      ```
      aws redshift describe-data-shares \
       --data-share-arn 'arn:aws:redshift:us-east-1:111122223333:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/federatedds' \
      ```

   1. 데이터 공유를 수락합니다.

      ```
       aws redshift associate-data-share-consumer \
       --data-share-arn 'arn:aws:redshift:us-east-1:111122223333:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/federatedds' \
       --consumer-arn 'arn:aws:glue:us-east-1:111122223333:catalog
      ```

   1. Lake Formation 계정에 데이터 공유를 등록합니다. [RegisterResource](https://docs.aws.amazon.com/lake-formation/latest/APIReference/API_RegisterResource.html) API 작업을 사용하여 Lake Formation에 데이터 공유를 등록할 수 있습니다. `DataShareArn`은 `ResourceArn`의 파라미터입니다.
**참고**  
이것은 필수 단계입니다.

      ```
      aws lakeformation register-resource \
       --resource-arn 'arn:aws:redshift:us-east-1:111122223333:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/federatedds'
      ```

------

1. 데이터베이스를 생성합니다.

    데이터 공유 초대를 수락한 후에는 데이터 공유와 연결된 Amazon Redshift 데이터베이스를 가리키는 데이터베이스를 생성해야 합니다. 데이터베이스를 생성하려면 데이터 레이크 관리자여야 합니다.

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

   1.  **초대** 창에서 데이터 공유를 선택하고 **데이터베이스 세부 정보 설정**을 선택합니다.

   1.  **데이터베이스 세부 정보 설정**에서 데이터 공유의 고유한 이름과 식별자를 입력합니다. 이 식별자를 사용하여 메타데이터 계층 구조(dbname.schema.table)에서 내부적으로 데이터 공유를 매핑합니다.

   1.  공유 데이터베이스 및 테이블에 대한 권한을 다른 사용자에게 부여하려면 **다음**을 선택합니다.

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

    AWS CLI를 사용하여 Lake Formation과 공유되는 Amazon Redshift 데이터베이스를 가리키는 데이터베이스를 생성하려면 다음 예제 코드를 사용합니다.

   ```
   aws glue create-database --cli-input-json \
   
   '{
    "CatalogId": "111122223333",
    "DatabaseInput": {
     "Name": "tahoedb",
     "FederatedDatabase": {
          "Identifier": "arn:aws:redshift:us-east-1:111122223333:datashare:abcd1234-1234-ab12-cd34-1a2b3c4d5e6f/federatedds",
          "ConnectionName": "aws:redshift"
      }
    }
    }'
   ```

------

1. 권한을 부여합니다.

    데이터베이스를 생성한 후 계정의 사용자 또는 외부 AWS 계정 및 조직에 권한을 부여할 수 있습니다. Amazon Redshift 데이터 공유에 매핑된 페더레이션된 데이터베이스에 대한 데이터 쓰기 권한(삽입, 삭제) 및 메타데이터 권한(변경, 삭제, 생성)은 부여할 수 없습니다. 권한 부여에 대한 자세한 내용은 [Lake Formation 권한 관리](managing-permissions.md) 섹션을 참조하세요.
**참고**  
데이터 레이크 관리자는 페더레이션된 데이터베이스의 테이블만 볼 수 있습니다. 다른 작업을 수행하려면 해당 테이블에 대해 직접 더 많은 권한을 부여해야 합니다.

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

   1. **권한 부여** 화면에서 권한을 부여할 사용자를 선택합니다.

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

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

   AWS CLI를 사용하여 데이터베이스 및 테이블 권한을 부여하려면 다음 예제를 사용합니다.

   ```
   aws lakeformation grant-permissions --input-cli-json file://input.json
   
   {
      "Principal": {
              "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/non-admin"
      },
      "Resource": {
             "Database": {
                   "CatalogId": "111122223333",
                    "Name": "tahoedb"
              }
       },
       "Permissions": [
                "DESCRIBE"
        ],
       "PermissionsWithGrantOption": [
                            
        ]
    }
   ```

   ```
   aws lakeformation grant-permissions --input-cli-json file://input.json
   
   {
                      "Principal": {
                             "DataLakePrincipalIdentifier": "arn:aws:iam::111122223333:user/non-admin"
                      },
                     "Resource": {
                            "Table": {
                                 "CatalogId": "111122223333",
                                 "DatabaseName": "tahoedb",
                                 "Name": "public.customer"
                          }
                     },
                    "Permissions": [
                           "SELECT"
                     ],
                    "PermissionsWithGrantOption": [
                            "SELECT"
                      ]
    }
   ```

------

# 페더레이션된 데이터베이스 쿼리
<a name="qerying-fed-db"></a>

 권한 부여 후 사용자는 Amazon Redshift를 사용하여 로그인하고 페더레이션된 데이터베이스 쿼리를 시작할 수 있습니다. 이제 사용자는 로컬 데이터베이스 이름을 사용하여 SQL 쿼리에서 Amazon Redshift 데이터 공유를 참조할 수 있습니다. Amazon Redshift에서 데이터 공유를 통해 공유되는 공개 스키마의 고객 테이블에는 데이터 카탈로그에 `public.customer`로 생성된 해당 테이블이 있습니다.

1. Amazon Redshift를 사용하여 페더레이션된 데이터베이스를 쿼리하기 전에 클러스터 관리자가 다음 명령을 사용하여 데이터 카탈로그 데이터베이스에서 데이터베이스를 생성합니다.

   ```
   CREATE DATABASE sharedcustomerdb FROM ARN 'arn:aws:glue:<region>:111122223333:database/tahoedb' WITH DATA CATALOG SCHEMA tahoedb
   ```

1.  클러스터 관리자가 데이터베이스에 대한 사용 권한을 부여합니다.

   ```
   GRANT USAGE ON DATABASE sharedcustomerdb TO IAM:user;
   ```

1.  이제 페더레이션 사용자는 SQL 도구에 로그인하여 테이블을 쿼리할 수 있습니다.

   ```
   Select * from sharedcustomerdb.public.customer limit 10;
   ```

 자세한 정보는 Amazon Redshift 관리 안내서의 [AWS Glue Data Catalog 쿼리](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-glue.html)를 참조하세요.