

 Amazon Redshift는 패치 198부터 새 Python UDF 생성을 더 이상 지원하지 않습니다. 기존 Python UDF는 2026년 6월 30일까지 계속 작동합니다. 자세한 내용은 [블로그 게시물](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)을 참조하세요.

# Amazon Redshift에서 데이터 공유
<a name="datashare-overview"></a>

Amazon Redshift를 사용하면 Amazon Redshift 클러스터 또는 다른 AWS 서비스 전반에서 데이터를 안전하게 공유할 수 있습니다. 데이터 공유를 통해 복사본을 만들거나 이전하지 않고도 실시간 데이터 공유가 가능합니다. 데이터베이스 관리자와 데이터 엔지니어는 데이터 공유를 사용하여 데이터에 대한 제어를 유지 관리하면서 분석 목적으로 데이터에 대해 안전한 읽기 전용 액세스를 제공할 수 있습니다. 데이터 분석가, 비즈니스 인텔리전스 전문가 및 데이터 과학자는 공유 데이터를 활용하여 데이터를 복제하거나 이전하지 않고도 인사이트를 확보합니다. 일반적인 사용 사례에는 파트너와 데이터 공유, 부서 간 분석 사용, 조직 내 데이터 민주화 촉진이 포함됩니다. 다음 섹션에서는 Amazon Redshift에서 데이터 공유를 구성하고 관리하는 방법에 대한 세부 정보를 다룹니다.

Amazon Redshift **데이터 공유를 사용하면 데이터를 수동으로 이동하거나 복사하지 않고도 Amazon Redshift 클러스터, 작업 그룹, AWS 계정 및 AWS 리전 전체에서 라이브 데이터에 대한 액세스를 안전하게 공유할 수 있습니다. 데이터가 라이브 상태이므로 모든 사용자는 업데이트되는 즉시 Amazon Redshift에서 가장 최신의 일관된 정보를 볼 수 있습니다.

프로비저닝된 클러스터, 서버리스 작업 그룹, 가용 영역, AWS 계정, AWS 리전 등에서 데이터를 공유할 수 있습니다. 클러스터 유형 간뿐만 아니라 프로비저닝된 클러스터와 서버리스 간에 공유할 수 있습니다.

서로 다른 Amazon Redshift 클러스터 또는 Amazon Redshift Serverless 작업 그룹 내에서, 한 AWS 계정에서, 또는 한 AWS 계정에서 다른 계정 간에 읽기 및 쓰기 모두에 대한 데이터베이스 객체를 공유할 수 있습니다. 서로 다른 리전 간에도 데이터를 읽고 쓸 수 있습니다. 서로 다른 테이블에 대해 SELECT, INSERT, UPDATE 등의 권한을 부여하고 서로 다른 스키마에 대해 USAGE 및 CREATE와 같은 권한을 부여할 수 있습니다. 데이터는 쓰기 트랜잭션이 커밋되는 즉시 라이브 상태로 모든 웨어하우스에서 사용할 수 있습니다.

## Amazon Redshift의 데이터 공유 사용 사례
<a name="use_cases"></a>

Amazon Redshift datashare는 다음과 같은 사용 사례에 특히 유용합니다.
+ **다양한 종류의 비즈니스 크리티컬 워크로드 지원** – 여러 비즈니스 인텔리전스(BI) 또는 분석 클러스터와 데이터를 공유하는 중앙 추출, 변환 및 로드(ETL) 클러스터를 사용합니다. 이 접근 방식은 개별 워크로드에 대한 읽기 워크로드 격리 및 차지백을 제공합니다. 가격 및 성능에 대한 워크로드별 요구 사항에 따라 개별 워크로드 컴퓨팅의 크기를 조정하고 확장할 수 있습니다.
+ **그룹 간 협업 사용** - 광범위한 분석, 데이터 과학 및 제품 간 영향 분석을 위해 팀과 비즈니스 그룹 간의 원활한 협업을 지원합니다.
+ **데이터를 서비스로 제공** – 조직 전체에서 데이터를 서비스로 공유합니다.
+ **환경 간 datashare** – 개발, 테스트 및 프로덕션 환경 간에 데이터를 공유합니다. 다양한 세분화된 수준에서 데이터를 공유하여 팀 민첩성을 향상시킬 수 있습니다.
+ **Amazon Redshift의 데이터에 대한 액세스 라이선스 부여** – 고객이 몇 분 안에 찾고, 구독하고, 쿼리할 수 있는 Amazon Redshift 데이터 집합을 AWS Data Exchange 카탈로그에 나열합니다.

### 데이터 공유 쓰기 액세스 사용 사례
<a name="datasharing-use-cases-writes"></a>

쓰기 데이터 공유에는 몇 가지 중요한 사용 사례가 있습니다.
+ **생산자에 대한 비즈니스 소스 데이터 업데이트** - 조직 전체에서 데이터를 서비스로 공유할 수 있지만, 이렇게 하면 소비자도 소스 데이터에 대한 작업을 수행할 수 있습니다. 예를 들어 소비자가 최신 값을 전달하거나 데이터 수신을 승인할 수 있습니다. 이는 비즈니스 사용 사례 중 몇 가지에 불과합니다.
+ **생산자에 추가 레코드 삽입** - 소비자가 원래 소스 데이터에 레코드를 추가할 수 있습니다. 필요한 경우 소비자가 추가한 것으로 표시할 수 있습니다.

데이터 공유에서 쓰기 작업을 수행하는 방법에 대한 구체적인 내용은 [Sharing write access to data](https://docs.aws.amazon.com/redshift/latest/dg/getting-started-datashare-writes.html)를 참조하세요.

## Amazon Redshift에서 다양한 수준의 데이터 공유
<a name="granularity"></a>

Amazon Redshift를 사용하면 여러 수준에서 데이터를 공유할 수 있습니다. 이러한 수준에는 데이터베이스, 스키마, 테이블, 뷰(일반, 후기 바인딩 및 구체화된 뷰 포함) 및 SQL 사용자 정의 함수(UDF)가 포함됩니다. 지정된 데이터베이스에 대해 여러 datashare를 생성할 수 있습니다. datashare에는 공유가 생성되는 데이터베이스에 있는 여러 스키마의 객체가 포함될 수 있습니다.

datashare에 있어 이러한 유연성을 갖추면 세분화된 액세스 제어가 가능합니다. Amazon Redshift 데이터에 액세스해야 하는 다양한 사용자와 비즈니스에 맞게 이 제어를 조정할 수 있습니다.

## Amazon Redshift에서 데이터 공유를 위한 일관성 관리
<a name="data_consistency"></a>

Amazon Redshift는 모든 생산자 및 소비자 클러스터에서 트랜잭션 일관성을 제공하고 모든 소비자와 데이터의 일관된 최신 뷰를 공유합니다.

생산자 클러스터에서 데이터를 지속적으로 업데이트할 수 있습니다. 트랜잭션 내의 소비자 클러스터에 대한 모든 쿼리는 공유 데이터의 동일한 상태를 읽습니다. Amazon Redshift는 소비자 클러스터에서 트랜잭션이 시작된 후 커밋된 생산자 클러스터의 다른 트랜잭션에 의해 변경된 데이터를 고려하지 않습니다. 생산자 클러스터에서 데이터 변경이 커밋된 후 소비자 클러스터의 새 트랜잭션은 업데이트된 데이터를 즉시 쿼리할 수 있습니다.

일관성이 뛰어나 데이터 공유 중 잘못된 결과를 포함할 수도 있는 충실도가 낮은 비즈니스 보고서가 작성될 위험이 없습니다. 이 요소는 재무 분석이나 기계 학습 모델을 훈련하는 데 사용되는 데이터 집합을 준비하는 데 결과를 사용할 수 있는 경우에 특히 중요합니다.

# Amazon Redshift의 데이터 공유 고려 사항
<a name="datashare-considerations"></a>

Amazon Redshift **데이터 공유를 사용하면 데이터를 수동으로 이동하거나 복사하지 않고도 Amazon Redshift 클러스터, 작업 그룹, AWS 계정 및 AWS 리전 전체에서 라이브 데이터에 대한 액세스를 안전하게 공유할 수 있습니다. 이전에는 데이터 공유의 객체가 모든 상황에서 읽기 전용이었습니다. 데이터 공유의 객체에 쓰는 기능은 새로운 기능입니다. 생산자가 데이터 공유의 객체에 INSERT 또는 CREATE와 같은 쓰기 권한을 특별히 부여한 경우에만 데이터 공유의 객체에 쓰기가 활성화됩니다. 또한 계정 간 공유의 경우 생산자는 쓰기에 대한 데이터 공유를 승인하고 소비자는 쓰기를 위해 특정 클러스터와 작업 그룹을 연결해야 합니다.

이 섹션에서는 Amazon Redshift 데이터 공유 작업 시 고려 사항을 다룹니다.

**Topics**
+ [Amazon Redshift의 데이터 공유에 대한 일반적인 고려 사항](considerations-datashare-general.md)
+ [Amazon Redshift의 데이터 공유 읽기 및 쓰기 고려 사항](considerations-datashare-reads-writes.md)
+ [Amazon Redshift Serverless 복원 시 데이터 공유에 대한 고려 사항](considerations-datashare-serverless-restore.md)
+ [Amazon Redshift에서 데이터 레이크 테이블과의 데이터 공유 시 고려 사항](considerations-datashare-datalake.md)
+ [Amazon Redshift에서 AWS Lake Formation과의 데이터 공유 시 고려 사항](lake-formation-considerations.md)
+ [Amazon Redshift에서 AWS Data Exchange과의 데이터 공유 시 고려 사항](adx-considerations.md)
+ [데이터 공유에 부여할 수 있는 권한](permissions-datashares.md)
+ [소비자의 데이터 공유 쓰기에 지원되는 SQL 문](multi-warehouse-writes-sql-statements.md)
+ [소비자의 데이터 공유 쓰기에 지원되지 않는 SQL 문](multi-warehouse-writes-sql-statements-unsupported.md)

# Amazon Redshift의 데이터 공유에 대한 일반적인 고려 사항
<a name="considerations-datashare-general"></a>

다음은 Amazon Redshift의 데이터 공유 작업 시 일반적인 고려 사항입니다.
+ *기본 데이터베이스* - 데이터 공유에서 데이터를 읽을 때는 로컬 클러스터 데이터베이스에 연결된 상태를 유지합니다. 데이터 공유에서 생성된 데이터베이스 설정 및 읽기에 대한 자세한 내용은 [데이터 공유 객체 쿼리](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-datashare-using.html#query-editor-v2-datashare-consumer) 및 [Amazon Redshift Spectrum의 외부 데이터 레이크 테이블에 대한 구체화된 뷰외부 데이터 레이크 테이블의 구체화된 뷰](materialized-view-external-table.md)를 참조하세요.
+ *연결* - 데이터 공유에 쓰려면 데이터 공유 데이터베이스에 직접 연결하거나 USE 명령을 실행해야 합니다. 세 부분으로 구성된 표기법을 사용할 수도 있습니다. USE 명령은 외부 테이블에서 지원되지 않습니다.
+ *성능* - 공유 데이터에 대한 쿼리의 성능은 소비자 클러스터의 컴퓨팅 용량에 따라 다릅니다.
+ *데이터 전송 요금* - 리전 간 데이터 공유에는 리전 간 데이터 전송 요금이 추가로 부과됩니다.
  + 이러한 데이터 전송 요금은 동일한 리전 내에서는 적용되지 않고 리전 간에만 적용됩니다. 자세한 내용은 [리전 간 데이터 공유를 위한 비용 관리](cross-region-billing.md) 섹션을 참조하세요.
  + 생산자의 데이터를 쿼리하는 데 필요한 모든 컴퓨팅 및 리전 간 데이터 전송 요금은 소비자에게 부과됩니다. 프로비저닝된 클러스터 또는 서버리스 네임스페이스의 기본 데이터 스토리지에 대해서는 생산자에게 요금이 부과됩니다.
+ *클러스터 내부 및 클러스터 간 데이터 공유* - 서로 다른 Amazon Redshift 프로비저닝 클러스터 또는 서버리스 작업 그룹 간에 데이터를 공유할 때만 데이터 공유가 필요합니다. 다른 데이터베이스의 객체에 대해 필요한 권한이 있는 한, 동일한 클러스터 내에서 간단한 세 부분으로 구성된 표기법 `database.schema.table`을 사용하여 다른 데이터베이스를 쿼리할 수 있습니다.
+ *메타데이터 검색* - Redshift JDBC, ODBC 또는 Python 드라이버를 통해 데이터 공유 데이터베이스에 직접 연결된 소비자인 경우 다음과 같은 방법으로 카탈로그 데이터를 볼 수 있습니다.
  + SQL [SHOW](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW.html) 명령
  + information\$1schema 테이블 및 뷰 쿼리
  + [SVV 메타데이터 뷰](https://docs.aws.amazon.com/redshift/latest/dg/svv_views.html) 쿼리
+ *권한 가시성* - 소비자는 SHOW GRANTS SQL 명령을 통해 데이터 공유에 부여된 권한을 볼 수 있습니다.
+ *데이터 공유를 위한 클러스터 암호화 관리* - AWS 계정 전반에서 데이터를 공유하려면 생산자와 소비자 클러스터를 모두 암호화해야 합니다.
  + 생산자와 소비자 클러스터 및 서버리스 네임스페이스가 모두 동일한 계정에 있는 경우 동일한 암호화 유형(암호화되지 않은 유형 또는 암호화된 유형 중 하나)을 보유해야 합니다. Lake Formation 관리형 데이터 공유를 포함한 다른 모든 경우에는 소비자와 생산자를 모두 암호화해야 합니다. 이는 보안을 위한 것입니다. 하지만 동일한 암호화 키를 공유할 필요는 없습니다.
  + 전송 중인 데이터 보호를 위해 생산자 클러스터의 암호화 스키마를 통해 전송 중인 모든 데이터를 암호화합니다. 소비자 클러스터는 데이터가 로드될 때 이 암호화 스키마를 채택합니다. 그런 다음 소비자 클러스터는 일반적인 암호화된 클러스터로 작동합니다. 생산자와 소비자 간의 통신도 공유 키 스키마를 사용하여 암호화됩니다. 전송 중 암호화에 대한 자세한 내용은 [전송 중 데이터 암호화](https://docs.aws.amazon.com/redshift/latest/mgmt/security-encryption-in-transit.html)를 참조하세요.

# Amazon Redshift의 데이터 공유 읽기 및 쓰기 고려 사항
<a name="considerations-datashare-reads-writes"></a>

**참고**  
데이터 공유를 사용하는 Amazon Redshift 다중 웨어하우스 쓰기는 현재 트랙 버전 1.0.78881 이상의 프로비저닝된 클러스터에 대한 Amazon Redshift 패치 186과 버전 1.0.78890 이상의 Amazon Redshift Serverless 작업 그룹에 대해서만 지원됩니다.

다음은 Amazon Redshift의 데이터 공유 읽기 및 쓰기 작업 시 고려 사항입니다.
+ 데이터 공유를 통해서만 SQL UDF를 공유할 수 있습니다. Python 및 Lambda UDF는 지원되지 않습니다.
+ 생산자 데이터베이스에 특정 데이터 정렬이 있는 경우 소비자 데이터베이스에 동일한 데이터 정렬 설정을 사용합니다.
+ Amazon Redshift는 생산자 클러스터에서 중첩된 SQL 사용자 정의 함수를 지원하지 않습니다.
+ Amazon Redshift는 인터리브 정렬 키가 있는 테이블과 이러한 테이블을 참조하는 뷰 공유를 지원하지 않습니다.
+ Amazon Redshift는 액세스 준비와 실행 간에 동시 DDL이 발생한 데이터 공유 객체에 대한 액세스를 지원하지 않습니다.
+ Amazon Redshift는 데이터 공유를 통한 저장 프로시저 공유를 지원하지 않습니다.
+ Amazon Redshift는 메타데이터 시스템 뷰 및 시스템 테이블 공유를 지원하지 않습니다.
+ *컴퓨팅 유형* - 이 기능을 사용하려면 Serverless 작업 그룹, ra3.large 클러스터, ra3.xlplus 클러스터, ra3.4xl 클러스터 또는 ra3.16xl 클러스터를 사용해야 합니다.
+ *격리 수준* - 다른 Serverless 작업 그룹과 프로비저닝된 클러스터가 데이터베이스에 쓸 수 있으려면 데이터베이스의 격리 수준이 스냅샷 격리여야 합니다.
+ *다중 문 쿼리 및 트랜잭션* - 트랜잭션 블록 외부의 다중 문 쿼리는 현재 지원되지 않습니다. 따라서 dbeaver와 같은 쿼리 에디터를 사용하고 쓰기 쿼리가 여러 개 있는 경우 쿼리를 명시적인 BEGIN...END 트랜잭션 문으로 래핑해야 합니다.

  다중 명령문이 트랜잭션 외부에서 사용되는 경우 첫 번째 명령이 생산자 데이터베이스에 대한 쓰기인 경우 문의 후속 쓰기 명령은 해당 생산자 데이터베이스에만 허용됩니다. 첫 번째 명령이 읽기인 경우 후속 쓰기 명령은 사용된 데이터베이스가 설정된 경우 사용된 데이터베이스에만 허용되고, 설정되지 않은 경우 로컬 데이터베이스에만 허용됩니다. 트랜잭션의 쓰기는 단일 데이터베이스에만 지원됩니다.
+ *소비자 크기 조정* - 데이터 공유를 사용하여 쓰기를 수행하려면 소비자 클러스터에 64개 이상의 조각이 있어야 합니다.
+ *뷰 및 구체화된 뷰* - 데이터 공유 데이터베이스에서 뷰 또는 구체화된 뷰를 만들거나 업데이트하거나 변경할 수 없습니다.
+ *보안* - 열 수준(CLS), 행 수준(RLS) 및 동적 데이터 마스킹(DDM)과 같은 보안 정책을 데이터 공유 객체에 연결하거나 제거할 수 없습니다.
+ *관리 가능성* - 소비자 웨어하우스는 데이터 공유 객체 또는 데이터 공유 객체를 참조하는 뷰를 다른 데이터 공유에 추가할 수 없습니다. 또한 소비자는 기존 데이터 공유를 수정하거나 삭제할 수 없습니다.
+ *잘라내기 작업* - 데이터 공유 쓰기는 원격 테이블에 대한 트랜잭션 잘라내기를 지원합니다. 이는 클러스터에서 로컬로 실행하는 자동 커밋 잘라내기와 다릅니다. SQL 명령에 대한 자세한 내용은 [TRUNCATE](https://docs.aws.amazon.com/redshift/latest/dg/r_TRUNCATE.html) 섹션을 참조하세요.
+ *복제* - LIKE 절 문이 있는 CREATE TABLE은 소비자 웨어하우스에서 생산자를 대상으로 작성을 할 때 단일 상위 테이블에서의 복제를 지원합니다.

# Amazon Redshift Serverless 복원 시 데이터 공유에 대한 고려 사항
<a name="considerations-datashare-serverless-restore"></a>

Amazon Redshift Serverless 복원 작업 중 데이터 공유를 사용할 때 다음 사항을 고려합니다.

**Amazon Redshift Serverless 생산자 네임스페이스로 스냅샷 복원:**
+ Amazon Redshift Serverless 생산자 네임스페이스에 스냅샷을 복원하면 현재 데이터 공유가 스냅샷의 데이터 공유로 대체됩니다. 그러나 데이터 공유 권한은 다음 조건이 모두 충족되는 경우에만 유지됩니다.
  + 스냅샷은 고객이 복원하는 것과 동일한 네임스페이스에서 생성됩니다.
  + 데이터 공유 권한이 현재 네임스페이스에 존재하며,
  + 스냅샷을 생성할 때 데이터 공유 권한이 네임스페이스에 존재했습니다.
+ 스냅샷을 생성할 때 소비자에게 데이터 공유가 부여되었지만 삭제되었거나 최신 네임스페이스에서 권한 부여가 취소된 경우 데이터 공유가 복원됩니다. 하지만 복원 후에는 소비자 클러스터에 부여된 데이터 공유 권한이 더 이상 유효하지 않습니다. 데이터 공유 접근 권한을 복구하려면 원하는 소비자 클러스터에 데이터 공유 사용 권한을 다시 부여합니다.
+ 최신 네임스페이스에서 소비자에게 데이터 공유가 부여되었지만 스냅샷을 생성할 때 부여되지 않은 경우 복원 후 데이터 공유 액세스가 유지되지 않습니다.
+ 데이터 공유 권한 부여/연결 범위는 복원 후 네임스페이스에서 변경되지 않습니다. 예를 들어 데이터 공유가 전체 AWS 계정에 연결된 경우 복원하기 전에 복원 후 스냅샷을 생성할 때 연결 범위는 연결 범위에 관계없이 계정 수준으로 유지됩니다.
+ 스냅샷에서 복원하면 후속 변경 사항에 관계없이 스냅샷이 생성된 시점에 공개적으로 액세스할 수 있는 설정이 해당 상태로 되돌아갑니다.

**Amazon Redshift Serverless 소비자 네임스페이스로 스냅샷 복원:**
+ 소비자 네임스페이스를 복원하면 생산자 관리자가 사용량을 다시 부여할 필요 없이 데이터 공유 액세스가 유지됩니다. 그러나 복원 후 데이터 공유에서 생성된 데이터베이스가 더 이상 존재하지 않는 경우 소비자는 데이터 공유에서 데이터베이스를 다시 생성해야 합니다.

# Amazon Redshift에서 데이터 레이크 테이블과의 데이터 공유 시 고려 사항
<a name="considerations-datashare-datalake"></a>

다음은 Amazon Redshift에서 데이터 레이크 테이블 작업 시 고려 사항입니다.
+ 데이터 레이크 테이블의 데이터 공유는 Amazon S3 버킷 암호화를 위한 고객 관리형 AWS KMS keys를 지원하지 않습니다. 암호화에 AWS 관리형 키를 사용할 수 있습니다. 자세한 내용은 [Amazon S3 관리형 키를 사용한 서버 측 암호화(SSE-S3) 사용](https://docs.aws.amazon.com/AmazonS3/latest/userguide/UsingServerSideEncryption.html)을 참조하세요.
+ 암호화된 AWS Glue 카탈로그에서 데이터 레이크 테이블을 데이터 공유하려면 [데이터 카탈로그 암호화](https://docs.aws.amazon.com/glue/latest/dg/encrypt-glue-data-catalog.html)의 지침에 따라 AWS KMS 작업을 IAM 역할에 위임해야 합니다.
+  `LOCATION` 절에서 매니페스트 파일을 명시적으로 지정하는 외부 테이블은 데이터 공유에 지원되지 않습니다. 여기에는 Amazon Redshift Spectrum에서 지원하는 다음 테이블이 포함됩니다.
  +  Delta Lake 
  +  Hudi 

# Amazon Redshift에서 AWS Lake Formation과의 데이터 공유 시 고려 사항
<a name="lake-formation-considerations"></a>

다음은 Lake Formation과 Amazon Redshift 데이터를 공유할 때 고려해야 할 사항과 제한 사항입니다. 데이터 공유 고려 사항 및 제한 사항에 대한 자세한 내용은 [Amazon Redshift에서 데이터 공유를 사용할 때의 고려 사항](https://docs.aws.amazon.com/redshift/latest/dg/datashare-considerations.html)을 참조하세요. Lake Formation 제한에 대한 자세한 내용은 [Lake Formation에서의 Amazon Redshift 데이터 공유 작업에 대한 참고 사항](https://docs.aws.amazon.com/lake-formation/latest/dg/notes-rs-datashare.html)을 참조하세요.
+ 리전 간 Lake Formation에 데이터 공유를 공유하는 것은 현재 지원되지 않습니다.
+ 공유 관계에서 사용자에 대해 열 수준 필터가 정의된 경우 `SELECT *` 작업을 수행하면 사용자가 액세스할 수 있는 열만 반환됩니다.
+ Lake Formation의 셀 수준 필터는 지원되지 않습니다.
+ 뷰 및 해당 테이블을 생성하고 Lake Formation에 공유한 경우 테이블 액세스를 관리하도록 필터를 구성할 수 있으며, 소비자 클러스터 사용자가 공유 객체에 액세스하는 경우 Amazon Redshift가 Lake Formation에 정의된 정책을 적용합니다. 사용자가 Lake Formation과 공유된 뷰에 액세스하면 Redshift는 뷰에 정의된 Lake Formation 정책만 적용하고 뷰에 포함된 테이블에 정의된 정책은 적용하지 않습니다. 그러나 사용자가 테이블에 직접 액세스하면 Redshift는 정의된 Lake Formation 정책을 테이블에 적용합니다.
+ 공유 테이블에 Lake Formation 필터가 구성된 경우 공유 테이블을 기반으로 소비자에 구체화된 뷰를 생성할 수 없습니다.
+ Lake Formation 관리자에게는 [데이터 레이크 관리자](https://docs.aws.amazon.com/lake-formation/latest/dg/getting-started-setup.html#create-data-lake-admin) 권한과 [데이터 공유를 수락하는 데 필요한 권한](https://docs.aws.amazon.com/lake-formation/latest/dg/redshift-ds-prereqs.html)이 있어야 합니다.
+ 생산자 소비자 클러스터가 Lake Formation을 통해 데이터 공유를 공유하려면 최신 Amazon Redshift 클러스터 버전 또는 서버리스 작업 그룹이 포함된 RA3 클러스터여야 합니다.
+ 생산자 클러스터와 소비자 클러스터를 모두 암호화해야 합니다.
+ 생산자 클러스터 또는 작업 그룹에 구현된 Redshift 행 수준 및 열 수준 액세스 제어 정책은 데이터 공유가 Lake Formation에 공유될 때 무시됩니다. Lake Formation 관리자는 Lake Formation에서 이러한 정책을 구성해야 합니다. 생산자 클러스터 또는 작업 그룹 관리자는 [ALTER TABLE](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_TABLE.html) 명령을 사용하여 테이블에 대한 RLS를 끌 수 있습니다.
+ Lake Formation을 통한 데이터 공유는 Redshift와 Lake Formation에 모두 액세스할 수 있는 사용자만 사용할 수 있습니다.

# Amazon Redshift에서 AWS Data Exchange과의 데이터 공유 시 고려 사항
<a name="adx-considerations"></a>

Amazon Redshift용 AWS Data Exchange 사용 시 다음 사항을 고려하세요.
+ 생산자와 소비자 모두 Amazon Redshift datashare를 사용하려면 RA3 인스턴스 유형을 사용해야 합니다. 생산자는 최신 Amazon Redshift 클러스터 버전과 함께 RA3 인스턴스 유형을 사용해야 합니다.
+ 생산자 클러스터와 소비자 클러스터를 모두 암호화해야 합니다.
+ AWS Data Exchange datashare가 포함된 제품을 비롯하여 AWS Data Exchange에 제품을 나열하려면 AWS Data Exchange 공급자로 등록해야 합니다. 자세한 내용은 [공급자로 시작하기](https://docs.aws.amazon.com/data-exchange/latest/userguide/provider-getting-started.html)를 참조하세요.
+ AWS Data Exchange를 통해 Amazon Redshift 데이터를 찾고, 구독하고, 쿼리하기 위해 등록된 AWS Data Exchange 공급자일 필요는 없습니다.
+ 데이터에 대한 액세스를 제어하려면 공개적으로 액세스할 수 있는 설정이 지정된 상태에서 AWS Data Exchange datashare를 생성합니다. 공개적으로 액세스할 수 있는 설정을 해제하도록 AWS Data Exchange datashare를 변경하려면 ALTER DATASHARE SET PUBLICACCESSIBLE FALSE를 허용하도록 세션 변수를 설정합니다. 자세한 내용은 [ALTER DATASHARE 사용 참고 사항](r_ALTER_DATASHARE.md#r_ALTER_DATASHARE_usage) 섹션을 참조하세요.
+ AWS Data Exchange datashare에 대한 액세스 권한은 datashare가 포함된 AWS Data Exchange 제품에 대한 활성 구독을 기반으로 부여되기 때문에 생산자는 AWS Data Exchange datashare에서 소비자를 수동으로 추가하거나 제거할 수 없습니다.
+ 생산자는 소비자가 실행하는 SQL 쿼리를 볼 수 없습니다. 생산자만 액세스할 수 있는 Amazon Redshift 테이블을 통해서만 쿼리 수 또는 소비자가 쿼리하는 객체와 같은 메타데이터를 볼 수 있습니다. 자세한 내용은 [Amazon Redshift의 데이터 공유 모니터링 및 감사](auditing.md) 섹션을 참조하세요.
+ datashare를 공개적으로 액세스할 수 있게 하는 것이 좋습니다. 그렇지 않으면 공개적으로 액세스할 수 있는 소비자 클러스터가 있는 AWS Data Exchange의 구독자가 datashare를 사용할 수 없습니다.
+ DROP DATASHARE 문을 사용하여 다른 AWS 계정과 공유되는 AWS Data Exchange datashare를 삭제하지 않는 것이 좋습니다. 그렇게 하면 datashare에 대한 액세스 권한이 있는 AWS 계정가 액세스 권한을 상실합니다. 이 작업은 되돌릴 수 없습니다. 이러한 유형의 변경을 수행하면 AWS Data Exchange의 데이터 제품 조건을 위반할 수 있습니다. AWS Data Exchange datashare를 삭제하려는 경우 [DROP DATASHARE 사용 참고 사항](r_DROP_DATASHARE.md#r_DROP_DATASHARE_usage) 섹션을 참조하세요.
+ 리전 간 데이터 공유의 경우 AWS Data Exchange datashare를 생성하여 라이선스 데이터를 공유할 수 있습니다.
+ 다른 리전의 데이터를 사용하는 경우 소비자는 생산자 리전에서 소비자 리전으로의 리전 간 데이터 전송 요금을 지불합니다.

# 데이터 공유에 부여할 수 있는 권한
<a name="permissions-datashares"></a>

데이터 공유 맥락에서 다양한 객체 유형과 다양한 권한을 부여할 수 있습니다.

데이터베이스
+ CREATE
+ 객체
+ ALTER
+ DROP

스키마:
+ CREATE
+ 객체
+ ALTER
+ DROP

테이블:
+ SELECT
+ INSERT
+ UPDATE
+ DELETE
+ TRUNCATE
+ DROP
+ ALTER
+ REFERENCES

함수:
+ EXECUTE

# 소비자의 데이터 공유 쓰기에 지원되는 SQL 문
<a name="multi-warehouse-writes-sql-statements"></a>

쓰기를 포함한 데이터 공유에 지원되는 데이터 정의 언어(DDL) 문은 다음과 같습니다.
+ ALTER TABLE RENAME TO
+ ALTER TABLE RENAME COLUMN TO
+ ALTER TABLE ADD/DROP COLUMN
+ ALTER SCHEMA RENAME TO
+ \$1 CREATE \$1 DROP \$1 SCHEMA
+ \$1 CREATE \$1 DROP \$1 SHOW \$1 TABLE
+ CREATE TABLE table\$1name AS
+ BEGIN \$1 START TRANSACTION
+ END \$1 COMMIT \$1 ROLLBACK
+ TRUNCATE

쓰기를 포함한 데이터 공유에 지원되는 데이터 조작 언어(DML) 문은 다음과 같습니다.
+ SELECT
+ INSERT
+ INSERT INTO SELECT
+ UPDATE
+ DELETE
+ MERGE
+ COPY(COMPUPDATE 제외)

쓰기를 포함한 데이터 공유에 지원되는 분석 문은 다음과 같습니다.
+ ANALYZE. 소비자가 USER ANALYZE를 실행하고 생산자에게 통계를 보냅니다.
+ 소비자에서 실행되는 CTAS/COPY에 의해 활성화된 분석. 여기에는 소규모 소비자를 위한 멀티플렉싱이 포함됩니다.
+ COPY 후 생산자에서 실행 자동 분석.

쓰기를 포함한 데이터 공유에 지원되는 권한 문은 다음과 같습니다.
+ \$1 GRANT \$1 REVOKE \$1 privilege\$1name ON OBJECT\$1TYPE object\$1name TO consumer\$1user 
+ SHOW GRANTS. 자세한 내용은 [SHOW GRANTS](r_SHOW_GRANTS.md) 섹션을 참조하세요.

# 소비자의 데이터 공유 쓰기에 지원되지 않는 SQL 문
<a name="multi-warehouse-writes-sql-statements-unsupported"></a>

다음은 지원되지 않습니다.
+ 생산자에 쓸 때 소비자 웨어하우스에 대한 다중 문 쿼리
+ 이전 명령이 읽기 문인 경우 다른 데이터베이스의 소비자 웨어하우스에 대한 다중 문 쿼리
+ 공유 데이터베이스에 연결되지 않은 경우 one.dot 또는 two.dot 표기법과 같은 점 3개 표기법 이외의 객체 참조
+ 소비자가 생산자에게 쓰는 동시성 조정 쿼리
+ 소비자가 생산자에게 쓰는 자동 복사 작업 쓰기
+ 소비자가 생산자에게 쓰는 스트리밍 작업
+ 생산자 클러스터에서 소비자가 제로 ETL 통합 테이블 생성 제로 ETL 통합에 대한 자세한 내용은 [제로 ETL 통합 작업](https://docs.aws.amazon.com/redshift/latest/mgmt/zero-etl-using.html)을 참조하세요.
+ 데이터 공유를 통한 인터리브 정렬 키를 사용한 테이블에 쓰기
+ 데이터 공유를 통해 저장된 프로시저에 쓰기
+ 데이터 공유를 통해 SQL 사용자 정의 함수(UDF)에 쓰기. 여기에는 중첩, Python 및 Lambda UDF가 포함됩니다.
+ 생산자보다 컴퓨팅 조각이 많은 소비자 웨어하우스에 대한 ID 열의 UPDATE, INSERT 또는 COPY 문 
+ 생산자에게 쓸 때 소비자 웨어하우스에 비RMS 외부 테이블의 MERGE 문
+ 다음이 포함된 CREATE TABLE 문:
  + 데이터 유형 VARBYTE로 설정한 DEFAULT 표현식. VARBYTE 데이터 유형은 암시적으로 다른 데이터 유형으로 변환될 수 없습니다. 자세한 내용은 [CAST 함수](r_CAST_function.md) 섹션을 참조하세요.
  + 생산자에게 쓸 때 소비자 웨어하우스에 대한 NULL 파라미터가 있는 AS OF SELECT 문 

# 데이터 공유가 가능한 AWS 리전
<a name="data_sharing_regions"></a>

다음 테이블에는 데이터 공유 읽기 및 쓰기 기능의 사용 가능 여부가 나와 있습니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/data_sharing_regions.html)

# Amazon Redshift에서 데이터 공유 시작하기
<a name="getting-started-datasharing"></a>

이 섹션의 다음 가이드 중 하나에 따라 데이터 공유를 시작할 수 있습니다.

**Topics**
+ [콘솔에서 읽기 전용 데이터 공유 시작하기](getting-started-datashare-read-only.md)
+ [SQL 인터페이스를 사용한 읽기 전용 데이터 공유 시작하기](getting-started-datashare-sql.md)
+ [Amazon Redshift에서 데이터 공유를 사용하여 다중 웨어하우스 쓰기 시작하기](getting-started-datashare-writes.md)
+ [Amazon Redshift에서 AWS CloudFormation과 데이터 공유 시작하기](data-sharing-within-account-CF.md)

# 콘솔에서 읽기 전용 데이터 공유 시작하기
<a name="getting-started-datashare-read-only"></a>

Amazon Redshift를 사용하면 콘솔을 사용하여 쓰기로 데이터 공유를 관리하여 Amazon Redshift 클러스터 및 AWS 계정 전반의 데이터에 대한 액세스를 제어하고 데이터를 거버넌스할 수 있습니다. 다음 섹션에서는 Amazon Redshift 콘솔을 사용하여 쓰기로 데이터 공유를 구성하고 관리하는 방법에 대한 단계별 설명을 제공합니다.

Amazon Redshift 콘솔을 사용하여 계정에서 생성되거나 다른 계정에서 공유된 datashare를 관리합니다.

데이터 공유를 생성, 편집 또는 삭제하려면 권한이 필요합니다. 자세한 내용은 [Amazon Redshift에서 데이터 공유에 대한 권한 관리](writes-managing-permissions.md) 섹션을 참조하세요.
+ 생산자 관리자는 **클러스터** 탭에서 데이터 공유 만들기, 데이터 소비자 추가, 데이터 공유 객체 추가, 데이터 공유에서 데이터베이스 만들기, 데이터 공유 편집 또는 데이터 공유 삭제를 수행할 수 있습니다.

  탐색 메뉴에서 [**클러스터(Clusters)**] 탭으로 이동하고 클러스터 목록에서 클러스터를 선택합니다. 그런 다음, 다음 중 하나를 수행하세요.
  + **Datashare**(데이터 공유) 탭을 선택하고 **Datashares created in my namespace**(내 네임스페이스에서 생성된 datashare) 섹션을 선택합니다. 그런 다음, 다음 중 하나를 수행하세요.
    + [데이터 공유 만들기](datashare-creation.md#create-datashare-console)

      datashare가 생성되면 datashare 객체 또는 데이터 소비자를 추가할 수 있습니다. 자세한 내용은 [데이터 공유에 데이터 공유 객체 추가](datashare-creation.md#add-datashare-object-console) 및 [데이터 공유에 데이터 소비자 추가](datashare-creation.md#add-data-consumer-console) 섹션을 참조하세요.
    + [계정에 생성된 datashare 편집](manage-datashare-existing-console.md#edit-datashare-console)
    + [계정에 만들어진 데이터 공유 삭제](manage-datashare-existing-console.md#delete-datashare-console)
  + [**Datashare(Datashares)**]를 선택하고 [**다른 클러스터의 datashare(Datashares from other clusters)**]에서 datashare를 선택합니다. 그런 다음, 다음 중 하나를 수행하세요.
    + [데이터 공유 만들기](datashare-creation.md#create-datashare-console)
    + [datashare에서 데이터베이스 생성](query-datashare-console.md#create-database-from-datashare-console)
  + [**데이터베이스(Databases)**]를 선택하고 [**데이터베이스(Databases)**] 섹션에서 데이터베이스를 선택합니다. 그런 다음 [**datashare 생성(Create datashare)**]을 선택합니다. 자세한 내용은 [datashare에서 데이터베이스 생성](query-datashare-console.md#create-database-from-datashare-console) 섹션을 참조하세요.

**참고**  
데이터베이스 및 데이터베이스 내의 객체를 보거나 클러스터의 datashare를 보려면 데이터베이스에 연결합니다. 자세한 내용은 [데이터베이스로 연결](connect-database-console.md) 섹션을 참조하세요.

# 데이터베이스로 연결
<a name="connect-database-console"></a>

Amazon Redshift를 사용하면 데이터 웨어하우스 클러스터에 대한 연결을 설정하고 SQL 쿼리를 실행하거나 데이터를 로드하거나 관리 작업을 수행할 수 있습니다. 데이터베이스에 연결하는 것은 클라이언트 애플리케이션 또는 도구와 Amazon Redshift 클러스터 간에 보안 채널을 만드는 과정입니다. 다음 섹션에서는 Amazon Redshift 데이터베이스에 연결하는 방법에 대한 단계별 설명을 제공합니다.

데이터베이스에 연결하여 이 클러스터의 데이터베이스 내에서 데이터베이스와 객체를 보거나 datashare를 봅니다.

모든 datashare를 보려면 지정된 데이터베이스에 연결하는 데 사용되는 사용자 자격 증명에 필요한 권한이 있어야 합니다.

로컬 연결이 없는 경우 다음 중 하나를 수행합니다.
+ 클러스터 세부 정보 페이지의 **데이터베이스** 탭에 있는 **데이터베이스** 또는 **데이터 공유 객체** 섹션에서 **데이터베이스에 연결**을 선택하면 클러스터의 데이터베이스 객체를 볼 수 있습니다.
+ 클러스터 세부 정보 페이지의 [**Datashare(Datashares)**] 탭에서 다음 작업 중 하나를 수행합니다.
  + [**다른 클러스터의 datashare(Datashares from other clusters)**] 섹션에서 [**데이터베이스에 연결(Connect to database)**]을 선택하여 다른 클러스터의 datashare를 봅니다.
  + [**내 클러스터에 생성된 datashare(Datashares created in my cluster)**] 섹션에서 [**데이터베이스에 연결(Connect to database)**]을 선택하여 클러스터의 datashare를 봅니다.
+ [**데이터베이스에 연결(Connect to database)**] 창에서 다음 중 하나를 수행합니다.
  + [**새 연결 생성(Create a new connection)**]을 선택하는 경우 [**AWS Secrets Manager**]를 선택하여 저장된 보안 암호로 연결에 대한 액세스를 인증합니다.

    또는 [**임시 자격 증명(Temporary credentials)**]을 선택하여 데이터베이스 자격 증명으로 연결에 대한 액세스를 인증합니다. [**데이터베이스 이름(Database name)**] 및 [**데이터베이스 사용자(Database user)**] 값을 지정합니다.

    **연결**을 선택합니다.
  + [**최근 연결 사용(Use a recent connection)**]을 선택하여 필요한 권한이 있는 다른 데이터베이스에 연결합니다.

    Amazon Redshift에서 자동으로 연결을 설정합니다.

데이터베이스 연결이 설정되면 데이터 공유 만들기, 데이터 공유 쿼리 또는 데이터 공유에서 데이터베이스 만들기를 시작할 수 있습니다.

# datashare 생성
<a name="datashare-creation"></a>

Amazon Redshift가 있으면 데이터 공유를 사용하여 Amazon Redshift 클러스터 또는 AWS 계정 전반에서 실시간 데이터를 공유할 수 있습니다. 데이터 공유는 Amazon Redshift 클러스터의 실시간 데이터를 다른 클러스터 또는 AWS 계정과 공유할 수 있는 소비자-생산자 객체입니다. 데이터 공유를 만들어 액세스에 대한 제어를 유지 관리하고 데이터를 최신 상태로 유지하면서 안전한 데이터 공유가 가능합니다. 다음 섹션에서는 데이터 공유를 만들고 스키마, 테이블 및 뷰와 같은 데이터베이스 객체를 추가하여 실시간 데이터를 안전하게 공유하는 방법에 대한 세부 정보를 제공합니다.

## 데이터 공유 만들기
<a name="create-datashare-console"></a>

데이터 공유는 데이터베이스 객체, 권한 및 소비자가 포함된 논리적 컨테이너입니다. 소비자는 사용자 계정 및 기타 AWS 계정의 Amazon Redshift 프로비저닝된 클러스터 또는 Amazon Redshift Serverless 네임스페이스입니다. 각 데이터 공유는 해당 데이터 공유가 생성된 데이터베이스와 연결되며 해당 데이터베이스의 객체만 추가할 수 있습니다. 생산자 관리자는 아래 절차 중 하나를 수행하여 콘솔과 SQL에서 데이터 공유를 만들 수 있습니다.

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

콘솔에서 클러스터 또는 네임스페이스 세부 정보 페이지의 **데이터 공유** 탭에서 데이터 공유를 만들 수 있습니다. 데이터 공유가 만들어진 후 소비자 관리자로서 소비자의 데이터 공유에서 데이터베이스를 만들 수 있습니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. 데이터베이스 연결이 없는 경우 클러스터 또는 네임스페이스 세부 정보 페이지에서 **데이터 공유** 탭의 **데이터 공유** 섹션에서 데이터베이스에 연결합니다. **내 계정에서 생성된 데이터 공유** 섹션에서 **데이터 공유 생성**을 선택합니다. **데이터 공유 생성** 페이지가 나타납니다.

1. [**datashare 생성(Create datashare)**]을 선택합니다. 로컬 데이터베이스에서만 datashare를 생성할 수 있습니다. 데이터베이스에 연결하지 않은 경우 **데이터베이스에 연결** 페이지가 나타납니다. [데이터베이스로 연결](connect-database-console.md)의 절차에 따라 데이터베이스에 연결합니다. 최근 연결이 있는 경우 **데이터 공유 생성** 페이지가 나타납니다.

1. **Datashare 정보(Datashare information)** 섹션에서 다음 중 하나를 선택합니다.
   + **데이터 공유**를 선택하여 각기 다른 Amazon Redshift 데이터 웨어하우스(프로비저닝된 클러스터 또는 Serverless 엔드포인트)에서 또는 동일한 AWS 계정이나 다른 AWS 계정에서 읽기 또는 쓰기 목적으로 데이터를 공유할 데이터 공유를 만듭니다.
   + **AWS Data Exchange datashare**를 선택하여 AWS Data Exchange를 통해 데이터에 라이선스를 부여할 datashare를 생성합니다.

1. **Datashare 이름(Datashare name)**, **데이터베이스 이름(Database name)** 및 **공개적으로 액세스 가능(Publicly accessible)** 값을 지정합니다. 데이터베이스 이름을 변경할 때 새 데이터베이스 연결을 만듭니다.

1. **범위가 지정된 권한** 또는 **직접 권한** 섹션을 사용하여 데이터 공유에 객체를 추가합니다. 데이터 공유에 객체를 추가하려면 [Amazon Redshift에서 데이터 공유 만들기](writes-creating-datashare.md) 섹션을 참조하세요.

1. **데이터 소비자** 섹션에서 Amazon Redshift에 게시하거나 Lake Formation과 데이터 공유 프로세스를 시작하는 AWS Glue Data Catalog에 게시하도록 선택할 수 있습니다. 데이터 공유를 Amazon Redshift에 게시한다는 것은 다른 네임스페이스 또는 소비자 역할을 하는 Amazon Redshift 계정과 데이터를 공유한다는 의미입니다.
**참고**  
데이터 공유가 생성되면 구성을 편집하여 다른 옵션에 게시할 수 없습니다.

1. [**datashare 생성(Create datashare)**]을 선택합니다.

------
#### [ SQL ]

다음 명령을 실행하여 데이터 공유를 생성합니다.

```
CREATE DATASHARE salesshare;
```

데이터 공유를 만들 때 각 데이터 공유는 데이터베이스와 연결됩니다. 해당 데이터베이스의 객체만 해당 datashare에서 공유할 수 있습니다. 동일하거나 다른 세부 수준의 객체를 사용하여 동일한 데이터베이스에 여러 datashare를 생성할 수 있습니다. 클러스터가 생성할 수 있는 datashare 수에는 제한이 없습니다. Amazon Redshift 콘솔을 사용하여 datashare를 생성할 수도 있습니다. 자세한 내용은 [CREATE DATASHARE](r_CREATE_DATASHARE.md) 섹션을 참조하세요.

만드는 중에 데이터 공유에 대한 보안 제한을 제어할 수도 있습니다. 다음 예에서는 퍼블릭 IP 액세스 권한이 있는 소비자가 데이터 공유를 읽을 수 있음을 보여줍니다.

```
CREATE DATASHARE my_datashare [PUBLICACCESSIBLE = TRUE];
```

PUBLICACCESSIBLE = TRUE로 설정하면 소비자가 공개적으로 액세스할 수 있는 클러스터 및 프로비저닝된 작업 그룹에서 데이터 공유를 쿼리할 수 있습니다. 허용하지 않으려면 이 옵션을 생략하거나 명시적으로 false로 설정하세요.

데이터 공유를 만든 후 소비자 유형에 대한 속성을 수정할 수 있습니다. 예를 들어 지정된 datashare의 데이터를 소비하려는 클러스터에 공개적으로 액세스할 수 없도록 정의할 수 있습니다. datashare에 지정된 보안 제한을 충족하지 않는 소비자 클러스터의 쿼리는 쿼리 런타임에 거부됩니다. 자세한 내용은 [ALTER DATASHARE](r_ALTER_DATASHARE.md) 섹션을 참조하세요.

------

## 데이터 공유에 데이터 공유 객체 추가
<a name="add-datashare-object-console"></a>

다음 절차 중 하나를 수행하여 콘솔 및 SQL에서 다양한 유형의 데이터베이스 객체를 추가할 수 있습니다.

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

**범위가 지정된 권한** 또는 **직접 권한** 섹션을 사용하여 데이터 공유에 객체를 추가할 수 있습니다. 객체를 추가할 **범위가 지정된 권한 부여** 또는 **직접 권한 부여**를 선택합니다. **추가** 버튼을 선택하여 객체를 추가합니다. 대화 상자가 나타납니다. 다음 단계를 수행합니다.

1. **범위가 지정된 권한 부여**를 선택하면 데이터베이스 또는 스키마 수준에서 범위가 지정된 권한을 부여할 수 있는 **범위가 지정된 권한 부여** 페이지가 나타납니다. 범위가 지정된 권한이 있는 데이터 공유는 데이터베이스 또는 스키마 내의 모든 현재 및 미래 객체에 대해 지정된 권한을 갖습니다. 자세한 내용은 [범위가 지정된 권한](t_scoped-permissions.md) 항목을 참조하세요.

   1. 그런 다음 **데이터베이스 범위가 지정된 권한**을 선택하여 데이터베이스 수준에서 범위가 지정된 권한을 부여합니다. 범위가 지정된 권한을 부여하면 데이터 공유를 만드는 동안 현재 데이터베이스에 적용됩니다. 이러한 권한은 개별 객체에 부여할 수 없으며 기존 객체와 새 객체(스키마, 테이블, 뷰, UDF) 모두에 적용됩니다.

   1. 스키마, 테이블 또는 뷰 또는 사용자 정의 함수에 범위가 지정된 권한을 하나 이상 선택합니다. 이렇게 하면 데이터베이스의 모든 객체가 소비자에게 부여된 선택된 권한을 갖게 됩니다. 데이터베이스 범위가 지정된 권한 부여를 완료하려면 **부여**를 선택합니다.

   1. 그런 다음 **스키마 범위가 지정된 권한**을 선택하여 스키마 수준에서 범위가 지정된 권한을 부여합니다. 스키마 범위가 지정된 권한을 부여하면 스키마에 추가된 모든 객체가 지정된 데이터 공유 권한을 갖게 됩니다.

   1. 드롭다운에서 데이터 공유에 추가할 스키마를 선택합니다. 한 번에 하나의 스키마만 선택할 수 있습니다. 그런 다음 선택한 스키마에 부여하려는 직접 권한을 하나 이상 선택합니다.

   1. 테이블, 뷰 및 사용자 정의 함수와 같은 스키마 객체에 범위가 지정된 권한을 하나 이상 선택합니다. 스키마의 매칭되는 모든 객체에 권한이 부여됩니다. 이러한 객체는 기존 객체이거나 향후 추가될 객체일 수 있습니다. 적용되면 범위가 지정된 권한을 취소하지 않고 객체에서 권한을 제거할 수 없습니다.

   1. 스키마 범위가 지정된 권한 부여를 완료하려면 **부여**를 선택합니다.

1. **직접 권한 부여**를 선택하면 **직접 권한 부여** 페이지가 나타나 스키마, 테이블, 뷰 또는 사용자 정의 함수와 같은 각 객체 수준에서 직접 권한을 부여할 수 있습니다. 직접 권한을 부여하려면 먼저 데이터 공유에 관련 스키마를 추가해야 합니다.

   1. 그런 다음 스키마에 **직접 권한 부여**를 선택하여 특정 스키마에 직접 권한을 적용합니다. 그런 다음 테이블, 뷰 및 사용자 정의 함수와 같은 스키마 객체의 스키마 권한을 하나 이상 선택하고 데이터 공유에 추가할 스키마를 선택합니다. **부여**를 선택하여 데이터 공유에 스키마 추가를 완료합니다.

   1. 데이터 공유에 스키마를 추가한 후 스키마 객체에 대한 직접 권한 추가를 진행할 수 있습니다. **직접 권한 부여**를 다시 선택합니다. **직접 권한 부여** 페이지가 나타납니다. 그런 다음 스키마 객체에 대한 직접 권한 탭으로 이동합니다.

   1. **테이블 및 뷰에 직접 권한 부여**를 선택하여 이러한 객체에 객체 수준 직접 권한을 부여합니다. 목록에서 필요한 직접 권한 하나 이상과 필요한 객체를 선택합니다. 검색 필드를 사용하여 데이터 공유 객체를 찾습니다. 부여를 선택하여 데이터 공유에 테이블 및 뷰 추가를 완료합니다.

   1. **사용자 정의 함수에 직접 권한 부여**를 선택하여 사용자 정의 함수에 객체 수준 직접 권한을 부여합니다. 목록에서 필요한 직접 권한 하나 이상과 필요한 객체를 선택합니다. 검색 필드를 사용하여 데이터 공유 객체를 찾습니다. **부여**를 선택하여 데이터 공유에 사용자 정의 함수 추가를 완료합니다.

1. **미래 객체를 추가**할지도 선택할 수 있습니다. 스키마에 추가된 데이터 공유 객체를 포함하도록 선택하면 스키마에 추가된 객체가 데이터 공유에 자동으로 추가됩니다.

1. **추가**를 선택하여 섹션을 완료하고 객체를 추가합니다. 추가된 객체는 **데이터 공유 객체**에 나열됩니다.

1. 객체를 추가한 후 개별 객체를 선택하고 권한을 편집할 수 있습니다. 스키마를 선택하면 **범위가 지정된 권한**을 추가할지 묻는 대화 상자가 나타납니다. 이렇게 하면 스키마의 기존 객체 또는 추가된 각 객체가 객체 유형에 적합한 미리 선택된 권한 세트를 갖게 됩니다. 예를 들어 관리자는 추가된 모든 테이블에 SELECT 및 UPDATE 권한을 갖도록 설정할 수 있습니다.

1. 모든 데이터 공유 객체는 **범위가 지정된 권한** 또는 **직접 권한** 섹션에 나열됩니다.

1. **데이터 소비자** 섹션에서 네임스페이스를 추가하거나 AWS 계정을 데이터 공유의 소비자로 추가할 수 있습니다.

1. **데이터 공유 생성**을 선택하여 변경 사항을 저장합니다.

데이터 공유를 만들면 **내 네임스페이스에서 생성된 데이터 공유** 아래 목록에 해당 데이터 공유가 나타납니다. 목록에서 데이터 공유를 선택하면 해당 소비자, 객체 및 기타 속성을 볼 수 있습니다.

------
#### [ SQL ]

SQL을 사용하면 데이터 공유 소유자는 데이터 공유에 추가할 스키마에 대해 USAGE 권한을 부여해야 합니다. GRANT는 스키마에서 CREATE 및 USAGE를 포함하여 다양한 작업을 허용하는 데 사용됩니다. 스키마에는 공유 객체가 들어 있습니다.

```
CREATE SCHEMA myshared_schema1;
CREATE SCHEMA myshared_schema2;
 
GRANT USAGE ON SCHEMA myshared_schema1 TO DATASHARE my_datashare;
GRANT CREATE, USAGE ON SCHEMA myshared_schema2 TO DATASHARE my_datashare;
```

또는 관리자가 ALTER 명령을 계속 실행하여 데이터 공유에 스키마를 추가할 수도 있습니다. 이러한 방식으로 스키마를 추가할 경우 USAGE 권한만 부여됩니다.

```
ALTER DATASHARE my_datashare ADD SCHEMA myshared_schema1;
```

관리자는 스키마를 추가한 후 스키마의 객체에 대해 데이터 공유 권한을 부여할 수 있습니다. 이 권한은 읽기 및 쓰기 권한일 수 있습니다. GRANT ALL 샘플은 모든 권한을 부여하는 방법을 보여줍니다.

```
GRANT SELECT, INSERT ON TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1
TO DATASHARE my_datashare;
                     
GRANT ALL ON TABLE myshared_schema1.table4 TO DATASHARE my_datashare;
```

계속해서 ALTER DATASHARE와 같은 명령을 실행하여 테이블을 추가할 수 있습니다. 이렇게 하면 추가된 객체에 대해 SELECT 권한만 부여됩니다.

```
ALTER DATASHARE my_datashare ADD TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1;
```

데이터베이스 또는 스키마 내 특정 유형의 모든 객체에 대해 범위가 지정된 권한을 데이터 공유에 부여할 수 있습니다. 범위가 지정된 권한이 있는 데이터 공유는 데이터베이스 또는 스키마 내의 모든 현재 및 미래 객체에 대해 지정된 권한을 갖습니다.

 [SVV\$1DATABASE\$1PRIVILEGES](r_SVV_DATABASE_PRIVILEGES.md)에서 데이터베이스 수준 범위 지정 권한의 범위를 볼 수 있습니다. [SVV\$1SCHEMA\$1PRIVILEGES](r_SVV_SCHEMA_PRIVILEGES.md)에서 스키마 수준 범위 지정 권한의 범위를 볼 수 있습니다.

다음은 데이터 공유에 범위가 지정된 권한을 부여할 때 사용하는 구문입니다. 범위가 지정된 권한에 대한 자세한 내용은 [범위가 지정된 권한](t_scoped-permissions.md) 섹션을 참조하세요.

```
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }FOR SCHEMAS IN
DATABASE db_name 
TO DATASHARE { datashare_name}

GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } }FOR TABLES IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO DATASHARE { datashare_name}

GRANT { EXECUTE | ALL [ PRIVILEGES ] }FOR FUNCTIONS IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO DATASHARE { datashare_name}
```

------

## 데이터 공유에 데이터 소비자 추가
<a name="add-data-consumer-console"></a>

datashare기에 데이터 소비자를 하나 이상 추가할 수 있습니다. 데이터 소비자는 Amazon Redshift 클러스터 또는 AWS 계정을 고유하게 식별한 네임스페이스일 수 있습니다.

퍼블릭 액세스 권한이 있는 클러스터에서 datashare를 해제하거나 설정하도록 명시적으로 선택해야 합니다.
+ **데이터 공유에 네임스페이스 추가**를 선택합니다. 네임스페이스는 Amazon Redshift 클러스터에 대한 GUID(전역 고유 식별자)입니다.
+ datashare에 **AWS 계정 추가(Add)**를 선택합니다. 지정된 AWS 계정에 datashare에 대한 액세스 권한이 있어야 합니다.

# datashare에서 권한 부여 또는 제거
<a name="authorize-datashare-console"></a>

생산자 관리자는 데이터 공유에 대한 액세스 권한을 부여하거나 제거할 데이터 소비자를 선택합니다. 권한이 부여된 데이터 소비자는 datashare에 대한 작업을 수행하라는 알림을 받습니다. 네임스페이스를 데이터 소비자로 추가하는 경우 권한 부여를 수행할 필요가 없습니다.

사전 조건: datashare에 대한 권한을 부여하거나 제거하려면 datashare에 추가된 데이터 소비자가 하나 이상 있어야 합니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **Datashares**를 선택합니다. datashare 목록 페이지가 나타납니다.

1. [**내 계정에서(In my account)**]를 선택합니다.

1. [**내 계정의 datashare(Datashares in my account)**] 섹션에서 다음 중 하나를 수행합니다.
   + 승인하려는 하나 이상의 소비자 클러스터를 선택합니다. 데이터 소비자 권한 부여 페이지가 나타납니다. 그런 다음 **권한 부여**(Authorize)를 선택합니다.

     데이터 공유를 생성할 때 **Publish to AWS Glue Data Catalog**(Glue 데이터 카탈로그에 게시)를 선택한 경우 데이터 공유 권한을 Lake Formation 계정에만 부여할 수 있습니다.

     AWS Data Exchange datashare의 경우 한 번에 하나의 datashare에만 권한을 부여할 수 있습니다.

     AWS Data Exchange datashare에 권한을 부여하면 AWS Data Exchange 서비스와 datashare를 공유하고 AWS Data Exchange에서 사용자를 대신하여 datashare에 대한 액세스를 관리하도록 허용합니다. AWS Data Exchange에서는 소비자가 제품을 구독할 때 AWS Data Exchange datashare에 소비자 계정을 데이터 소비자로 추가하여 소비자에 대한 액세스를 허용합니다. AWS Data Exchange에는 datashare에 대한 읽기 권한이 없습니다.
   + 승인을 제거하려는 하나 이상의 소비자 클러스터를 선택합니다. 그러면 [**권한 제거(Remove authorization)**]를 선택합니다.

권한을 부여 받은 데이터 소비자는 datashare 객체에 액세스하고 소비자 데이터베이스를 생성하여 데이터를 쿼리할 수 있습니다.

권한이 제거되면 데이터 소비자는 datashare에 대한 액세스 권한을 즉시 상실합니다.

# 소비자로서 다른 계정의 데이터 공유 관리
<a name="manage-datashare-other-console"></a>

## 데이터 소비자에게서 datashare의 연결 제거
<a name="disassociate-datashare-console"></a>

소비자 관리자는 데이터 소비자에게서 데이터 공유 연결을 제거할 수 있습니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **Datashares**를 선택합니다. datashare 목록 페이지가 나타납니다.

1. [**다른 계정에서(From other accounts)**]를 선택합니다.

1. [**다른 계정의 datashare(Datashares from other accounts)**] 섹션에서 데이터 소비자에게서 연결을 제거할 datashare를 선택합니다.

1. [**데이터 소비자(Data consumers)**] 섹션에서 연결을 제거할 데이터 소비자를 하나 이상 선택합니다. 그런 다음 [**연결 제거(Remove association)**]를 선택합니다.

1. 연결 제거 페이지가 나타나면 [**연결 제거(Remove association)**]를 선택합니다.

연결이 제거되면 데이터 소비자는 datashare에 대한 액세스 권한을 상실합니다. 언제든지 데이터 소비자 연결을 변경할 수 있습니다.

## datashare 거부
<a name="decline-datashare-console"></a>

소비자 관리자는 [사용 가능 또는 활성](https://docs.aws.amazon.com/redshift/latest/dg/access-cross-account.html#manage-status) 상태인 데이터 공유를 거부할 수 있습니다. 데이터 공유를 거부하면 소비자 클러스터 사용자는 데이터 공유에 대한 액세스 권한을 상실합니다. Amazon Redshift는 `DescribeDataSharesForConsumer` API 작업을 호출하는 경우 거부된 데이터 공유를 반환하지 않습니다. 생산자 관리자가 `DescribeDataSharesForProducer` API 작업을 실행하면 데이터 공유가 거부된 것을 확인할 수 있습니다. 데이터 공유가 거부되면 생산자 관리자는 소비자 클러스터에 대한 데이터 공유를 다시 승인할 수 있으며, 소비자 관리자는 자신의 AWS 계정을 데이터 공유와 연결하거나 이를 거부하도록 선택할 수 있습니다.

AWS 계정이 데이터 공유와 연결되어 있고 Lake Formation에서 관리하는 데이터 공유에 대한 보류 중인 연결이 있는 경우. Lake Formation에서 관리하는 데이터 공유 연결을 거부하면 원래 데이터 공유도 거부됩니다. 특정 연결을 거부하려면 생산자 관리자가 지정된 데이터 공유에서 권한 부여를 제거할 수 있습니다. 이 작업은 다른 데이터 공유에 영향을 주지 않습니다.

데이터 공유를 거부하려면 AWS 콘솔, API 작업 `RejectDataShare` 또는 AWS CLI의 `reject-datashare`를 사용하세요.

**AWS 콘솔을 사용하여 데이터 공유 생성**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **데이터 공유**를 선택합니다.

1. [**다른 계정에서(From other accounts)**]를 선택합니다.

1. [**다른 계정의 datashare(Datashares from other accounts)**] 섹션에서 거부할 datashare를 선택합니다. **datashare 거부(Decline datashare)** 페이지가 나타나면 **거부(Decline)**를 선택합니다.

datashare를 거부한 후에는 변경 사항을 되돌릴 수 없습니다. Amazon Redshift가 목록에서 데이터 공유를 제거합니다. 데이터 공유를 다시 보려면 생산자 관리자가 데이터 공유를 다시 승인해야 합니다.

# 기존 데이터 공유 관리
<a name="manage-datashare-existing-console"></a>

Amazon Redshift를 사용하면 기존 데이터 공유를 관리하여 Amazon Redshift 클러스터의 데이터에 대한 액세스를 제어할 수 있습니다. 다음 섹션에서는 Amazon Redshift 환경에서 데이터 공유를 관리하는 방법에 대한 단계별 가이드를 제공합니다.

## datashare 보기
<a name="view-datashare-console"></a>

[**datashare(DATASHARES)**] 또는 [**클러스터(CLUSTERS)**] 탭에서 datashare를 봅니다.
+ [**datashare(DATASHARES)**] 탭을 사용하여 자신의 계정이나 다른 계정의 datashare를 나열합니다.
  + 계정에서 생성된 datashare를 보려면 [**내 계정에서(In my account)**]를 선택하고 보려는 datashare를 선택합니다.
  + 다른 계정에서 공유되는 datashare를 보려면 [**다른 계정에서(From other accounts)**]를 선택하고 보려는 datashare를 선택합니다.
+ [**클러스터(CLUSTERS)**] 탭을 사용하여 자신의 클러스터나 다른 클러스터의 datashare를 나열합니다.

  데이터베이스에 연결합니다. 자세한 내용은 [데이터베이스로 연결](connect-database-console.md) 섹션을 참조하세요.

  그런 다음 [**다른 클러스터의 datashare(Datashares from other clusters)**] 또는 [**내 클러스터에 생성된 datashare(Datashares created in my cluster)**] 섹션에서 datashare를 선택하여 해당 세부 정보를 봅니다.

## datashare에서 datashare 객체 제거
<a name="remove-datashare-object-console"></a>

다음 절차를 사용하여 datashare에서 객체를 하나 이상 제거할 수 있습니다.

**datashare에서 객체를 하나 이상 제거하려면**

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. [**Datashare(Datashares)**]를 선택합니다.

1. [**내 계정에 생성된 datashare(Datashares created in my account)**] 섹션에서 [**데이터베이스에 연결(Connect to database)**]을 선택합니다. 자세한 내용은 [데이터베이스로 연결](connect-database-console.md) 섹션을 참조하세요.

1. 편집할 datashare를 선택한 다음 **편집(Edit)**을 선택합니다. datashare 세부 정보 페이지가 나타납니다.

1. datashare 객체를 하나 이상 제거하려면 다음 중 하나를 수행합니다.
   + datashare에서 스키마를 제거하려면 스키마를 하나 이상 선택합니다. 그런 다음 [**제거(Remove)**]를 선택합니다. Amazon Redshift는 datashare에서 지정된 스키마와 해당 스키마의 모든 객체를 제거합니다.
   + datashare에서 테이블과 뷰를 제거하려면 테이블과 뷰를 하나 이상 선택합니다. 그런 다음 [**제거(Remove)**]를 선택합니다. 또는 [**스키마별 제거(Remove by schema)**]를 선택하여 지정된 스키마의 모든 테이블과 뷰를 제거합니다.
   + datashare에서 사용자 정의 함수를 제거하려면 사용자 정의 함수를 하나 이상 선택합니다. 그런 다음 [**제거(Remove)**]를 선택합니다. 또는 [**스키마별 제거(Remove by schema)**]를 선택하여 지정된 스키마의 모든 사용자 정의 함수를 제거합니다.

## datashare에서 데이터 소비자 제거
<a name="remove-data-consumer-console"></a>

datashare에서 데이터 소비자를 하나 이상 제거할 수 있습니다. 데이터 소비자는 Amazon Redshift 클러스터 또는 AWS 계정을 고유하게 식별한 네임스페이스일 수 있습니다.

네임스페이스 ID 또는 AWS 계정에서 데이터 소비자를 하나 이상 선택한 다음 **제거**를 선택합니다.

Amazon Redshift는 datashare에서 지정된 데이터 소비자를 제거합니다. 제거된 소비자는 datashare에 대한 액세스 권한을 즉시 상실합니다.

## 계정에 생성된 datashare 편집
<a name="edit-datashare-console"></a>

콘솔을 사용하여 계정에 생성된 datashare를 편집합니다. 먼저 데이터베이스에 연결하여 계정에 생성된 datashare 목록을 봅니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. [**Datashare(Datashares)**]를 선택합니다.

1. [**내 계정에 생성된 datashare(Datashares created in my account)**] 섹션에서 [**데이터베이스에 연결(Connect to database)**]을 선택합니다. 자세한 내용은 [데이터베이스로 연결](connect-database-console.md) 섹션을 참조하세요.

1. 편집할 datashare를 선택한 다음 **편집(Edit)**을 선택합니다. datashare 세부 정보 페이지가 나타납니다.

1. [**datashare 객체(Datashare objects)**] 또는 [**데이터 소비자(Data consumers)**] 섹션에서 변경합니다.
**참고**  
데이터 공유를 AWS Glue Data Catalog에 게시하도록 선택한 경우 데이터 공유를 다른 Amazon Redshift 계정에 게시하도록 구성을 편집할 수 없습니다.

1. **변경 사항 저장**을 선택합니다.

변경 사항으로 datashare가 업데이트됩니다.

## 계정에 만들어진 데이터 공유 삭제
<a name="delete-datashare-console"></a>

콘솔을 사용하여 계정에 생성된 datashare를 삭제합니다. 먼저 데이터베이스에 연결하여 계정에 생성된 datashare 목록을 봅니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. [**Datashare(Datashares)**]를 선택합니다. datashare 목록이 나타납니다.

1. [**내 계정에 생성된 datashare(Datashares created in my account)**] 섹션에서 [**데이터베이스에 연결(Connect to database)**]을 선택합니다. 자세한 내용은 [데이터베이스로 연결](connect-database-console.md) 섹션을 참조하세요.

1. 삭제하려는 datashare를 하나 이상 선택하고 [**삭제(Delete)**]를 선택합니다. datashare 삭제 페이지가 나타납니다.

   Lake Formation과 공유된 데이터 공유를 삭제해도 Lake Formation에서 연결된 권한이 자동으로 제거되지 않습니다. 이를 제거하려면 Lake Formation 콘솔로 이동하세요.

1. [**삭제(Delete)**]를 입력하여 지정된 datashare 삭제를 확인합니다.

1. **삭제**를 선택합니다.

datashare가 삭제되면 데이터 소비자는 datashare에 대한 액세스 권한을 상실합니다.

# 데이터 공유 쿼리
<a name="query-datashare-console"></a>

Amazon Redshift를 사용하면 생산자 클러스터에서 데이터 공유 전반에 걸쳐 데이터를 쿼리하여 실시간 데이터를 복사하거나 전송하지 않고도 안전하게 액세스할 수 있습니다. 다음 섹션에서는 Amazon Redshift 환경에서 데이터 공유 설정 및 쿼리에 대한 세부 정보를 다룹니다.

## datashare에서 데이터베이스 생성
<a name="create-database-from-datashare-console"></a>

datashare에서 데이터 쿼리를 시작하기 위해 datashare에서 데이터베이스를 생성합니다. 지정된 datashare에서 데이터베이스를 하나만 생성할 수 있습니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. [**Datashare(Datashares)**]를 선택합니다. datashare 목록이 나타납니다.

1. [**다른 클러스터의 datashare(Datashares from other clusters)**] 섹션에서 [**데이터베이스에 연결(Connect to database)**]을 선택합니다. 자세한 내용은 [데이터베이스로 연결](connect-database-console.md) 섹션을 참조하세요.

1. 데이터베이스를 생성하려는 datashare를 선택하고 [**datashare에서 데이터베이스 생성(Create database from datashare)**]을 선택합니다. datashare에서 데이터베이스 생성 페이지가 나타납니다.

1. [**데이터베이스 이름(Database name)**]에서 데이터베이스 이름을 지정합니다. 데이터베이스 이름은 1\$164자의 영숫자(소문자만)여야 하며 예약어일 수 없습니다.

1. **생성(Create)**을 선택합니다.

datashare가 생성된 후 데이터베이스에서 데이터를 쿼리할 수 있습니다.

# AWS Data Exchange 데이터 공유 쿼리
<a name="manage-adx-datashare-console"></a>

Amazon Redshift를 사용하면 데이터 추출 또는 파이프라인을 생성하고 관리할 필요 없이 AWS Data Exchange에서 실시간 데이터를 안전하게 공유 및 수신할 수 있습니다. AWS Data Exchange 데이터 공유를 관리하면 서드 파티 데이터 제품을 구독하고 실시간 데이터 스트림을 Amazon Redshift 데이터 웨어하우스에 직접 통합할 수 있습니다. 다음 섹션에서는 Amazon Redshift 클러스터 내에서 AWS Data Exchange 데이터 공유를 관리하는 방법을 보여 줍니다.

## AWS Data Exchange에서 데이터 집합 생성
<a name="create-dataset-console"></a>

AWS Data Exchange에 데이터 집합을 생성합니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. **Datashare**를 선택합니다.

1. **내 계정에 생성된 datashare(Datashares created in my account)** 섹션에서 AWS Data Exchange datashare를 선택합니다.

1. **Create data set on AWS Data Exchange(ADE에서 데이터 집합 생성)**를 선택합니다. 자세한 내용은 [새 제품 게시](https://docs.aws.amazon.com/data-exchange/latest/userguide/publishing-products.html)를 참조하세요.

## AWS Data Exchange datashare 편집
<a name="edit-adx-datashare-console"></a>

콘솔을 사용하여 AWS Data Exchange datashare를 편집합니다. 먼저 데이터베이스에 연결하여 계정에 생성된 datashare 목록을 봅니다.

AWS Data Exchange datashare의 경우 데이터 소비자를 변경할 수 없습니다.

AWS Data Exchange datashare에 대해 공개적으로 액세스할 수 있는 설정을 편집하려면 쿼리 편집기 v2를 사용합니다. Amazon Redshift는 임의의 일회성 값을 생성하여이 설정을 해제할 수 있도록 세션 변수를 설정합니다. 자세한 내용은 [ALTER DATASHARE 사용 참고 사항](r_ALTER_DATASHARE.md#r_ALTER_DATASHARE_usage) 섹션을 참조하세요.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. 탐색기 메뉴에서 **편집기(Editor)**, **쿼리 편집기 v2(Query editor v2)**를 차례로 선택합니다.

1. 쿼리 편집기 v2를 처음 사용하는 경우 AWS 계정을 구성합니다. 기본적으로 AWS 소유의 키가 리소스를 암호화하는 데 사용됩니다. AWS 계정 구성에 대한 자세한 내용은 *Amazon Redshift 관리 가이드*의 [AWS 계정 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-getting-started.html) 섹션을 참조하세요.

1. AWS Data Exchange datashare가 있는 클러스터에 연결하려면 트리 보기 패널에서 **데이터베이스(Database)**와 클러스터 이름을 선택합니다. 메시지가 나타나면 연결 파라미터를 입력합니다.

1. 다음 SQL 문을 복사합니다. 다음 예에서는 공개적으로 액세스할 수 있는 salesshare datashare 설정을 변경합니다.

   ```
   ALTER DATASHARE salesshare SET PUBLICACCESSIBLE FALSE;
   ```

1. 복사된 SQL 문을 실행하려면 **쿼리(Queries)**를 선택하고 복사된 SQL 문을 쿼리 영역에 붙여 넣습니다. 그런 다음 **실행(Run)**을 선택합니다.

   다음과 같은 오류가 나타납니다.

   ```
   ALTER DATASHARE salesshare SET PUBLICACCESSIBLE FALSE;
   ERROR:  Alter of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value 'c670ba4db22f4b'
   ```

   값 'c670ba4db22f4b'는 권장되지 않는 작업이 발생할 때 Amazon Redshift가 생성하는 임의의 일회성 값입니다.

1. 다음 샘플 문을 복사하여 쿼리 영역에 붙여 넣습니다. 그런 다음 명령을 실행합니다. `SET datashare_break_glass_session_var` 명령은 AWS Data Exchange datashare에 대해 권장되지 않는 작업을 허용하는 권한을 적용합니다.

   ```
   SET datashare_break_glass_session_var to 'c670ba4db22f4b';
   ```

1. ALTER DATASHARE 문을 다시 실행합니다.

   ```
   ALTER DATASHARE salesshare;
   ```

Amazon Redshift는 변경 사항으로 datashare를 업데이트합니다.

## 계정에 생성된 AWS Data Exchange datashare 삭제
<a name="delete-adx-datashare-console"></a>

콘솔을 사용하여 계정에 생성된 AWS Data Exchange datashare를 삭제합니다. 먼저 데이터베이스에 연결하여 계정에 생성된 datashare 목록을 봅니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. 탐색기 메뉴에서 **편집기(Editor)**, **쿼리 편집기 v2(Query editor v2)**를 차례로 선택합니다.

1. 쿼리 편집기 v2를 처음 사용하는 경우 AWS 계정을 구성합니다. 기본적으로 AWS 소유의 키가 리소스를 암호화하는 데 사용됩니다. AWS 계정 구성에 대한 자세한 내용은 *Amazon Redshift 관리 가이드*의 [AWS 계정 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/query-editor-v2-getting-started.html) 섹션을 참조하세요.

1. AWS Data Exchange datashare가 있는 클러스터에 연결하려면 트리 보기 패널에서 **데이터베이스(Database)**와 클러스터 이름을 선택합니다. 메시지가 나타나면 연결 파라미터를 입력합니다.

1. 다음 SQL 문을 복사합니다. 다음 예에서는 salesshare datashare를 삭제합니다.

   ```
   DROP DATASHARE salesshare
   ```

1. 복사된 SQL 문을 실행하려면 **쿼리(Queries)**를 선택하고 복사된 SQL 문을 쿼리 영역에 붙여 넣습니다. 그런 다음 **실행(Run)**을 선택합니다.

   다음과 같은 오류가 나타납니다.

   ```
   ERROR:  Drop of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value '620c871f890c49'
   ```

   값 '620c871f890c49'는 권장되지 않은 작업이 발생할 때 Amazon Redshift가 생성하는 임의의 일회성 값입니다.

1. 다음 샘플 문을 복사하여 쿼리 영역에 붙여 넣습니다. 그런 다음 명령을 실행합니다. `SET datashare_break_glass_session_var` 명령은 AWS Data Exchange datashare에 대해 권장되지 않는 작업을 허용하는 권한을 적용합니다.

   ```
   SET datashare_break_glass_session_var to '620c871f890c49';
   ```

1. DROP DATASHARE 문을 다시 실행합니다.

   ```
   DROP DATASHARE salesshare;
   ```

datashare가 삭제되면 datashare 소비자는 datashare에 대한 액세스 권한을 상실합니다.

공유 AWS Data Exchange datashare를 삭제하면 AWS Data Exchange의 데이터 제품 약관을 위반할 수 있습니다.

# SQL 인터페이스를 사용한 읽기 전용 데이터 공유 시작하기
<a name="getting-started-datashare-sql"></a>

Amazon Redshift를 사용하면 Amazon Redshift 클러스터 전반에서 데이터를 안전하게 공유할 수 있으므로 데이터 소비자가 데이터를 복사하거나 복제하지 않고도 실시간 데이터를 쿼리하고 액세스할 수 있습니다. 데이터 공유를 통해 공유하려는 데이터베이스 객체를 참조하는 생산자 측 객체인 데이터 공유를 생성 및 구성합니다.

AWS 계정 또는 AWS 리전 내 또는 계정 간에 여러 Amazon Redshift 클러스터에서 읽기용으로 데이터를 공유할 수 있습니다.

**Topics**
+ [AWS 계정 내 데이터에 대한 읽기 액세스 공유](within-account.md)
+ [Amazon Redshift 데이터 공유에서 보기 작업](datashare-views.md)
+ [데이터 공유에 데이터 레이크 테이블 추가](create-datashare-external-views.md)
+ [AWS 계정에서 데이터 공유](across-account.md)
+ [AWS 리전에서 데이터 공유](across-region.md)
+ [AWS Data Exchange에서 라이선스가 부여된 Amazon Redshift 데이터 공유](adx-getting-started.md)
+ [AWS Lake Formation 관리형 데이터 공유 시작하기](lf-getting-started.md)

# AWS 계정 내 데이터에 대한 읽기 액세스 공유
<a name="within-account"></a>

Amazon Redshift를 사용하면 동일한 AWS 계정 내의 여러 데이터베이스 사용자 또는 그룹 전반에서 데이터에 대한 읽기 액세스를 공유할 수 있습니다. 이 기능을 사용하면 세분화된 수준에서 데이터 액세스 권한을 제어할 수 있으므로 권한이 부여된 사용자 또는 그룹만 특정 데이터세트를 읽게 됩니다.

## 생산자 관리자 또는 데이터베이스 소유자로서 읽기 목적으로 데이터 공유
<a name="share-producer"></a>

1. 클러스터에서 datashare를 생성합니다. 자세한 내용은 [CREATE DATASHARE](r_CREATE_DATASHARE.md) 섹션을 참조하세요.

   ```
   CREATE DATASHARE salesshare;
   ```

   클러스터 슈퍼 사용자와 데이터베이스 소유자는 datashare를 생성할 수 있습니다. 각 datashare는 생성하는 동안 데이터베이스와 연결됩니다. 해당 데이터베이스의 객체만 해당 datashare에서 공유할 수 있습니다. 동일하거나 다른 세부 수준의 객체를 사용하여 동일한 데이터베이스에 여러 datashare를 생성할 수 있습니다. 클러스터가 생성할 수 있는 datashare 수에는 제한이 없습니다.

   Amazon Redshift 콘솔을 사용하여 datashare를 생성할 수도 있습니다. 자세한 내용은 [데이터 공유 만들기](datashare-creation.md#create-datashare-console) 섹션을 참조하세요.

1. datashare에 대한 작업 권한을 위임합니다. 자세한 내용은 [GRANT](r_GRANT.md) 또는 [REVOKE](r_REVOKE.md) 섹션을 참조하세요.

   다음 예에서는 `salesshare`의 `dbuser`에 권한을 부여합니다.

   ```
   GRANT ALTER, SHARE ON DATASHARE salesshare TO dbuser;
   ```

   클러스터 슈퍼 사용자와 datashare 소유자는 datashare에 대한 수정 권한을 추가 사용자에게 부여하거나 취소할 수 있습니다.

1. datashare에 객체를 추가하거나 제거합니다. datashare에 객체를 추가하려면 객체를 추가하기 전에 스키마를 추가합니다. 스키마를 추가할 때 Amazon Redshift는 스키마 아래에 모든 객체를 추가하지 않습니다. 이러한 항목을 명시적으로 추가해야 합니다. 자세한 내용은 [ALTER DATASHARE](r_ALTER_DATASHARE.md) 섹션을 참조하세요.

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;
   ```

   datashare에 뷰를 추가할 수도 있습니다.

   ```
   CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD VIEW public.sales_data_summary_view;
   ```

   ALTER DATASHARE를 사용하여 지정된 스키마에서 스키마, 테이블, 뷰 및 함수를 공유합니다. 슈퍼 사용자, datashare 소유자 또는 datashare에 대한 ALTER 또는 ALL 권한이 있는 사용자는 datashare를 변경하여 객체를 추가하거나 제거할 수 있습니다. 사용자는 datashare에서 객체를 추가하거나 제거할 수 있는 권한이 있어야 합니다. 사용자는 객체 소유자이거나 객체에 대한 SELECT, USAGE 또는 ALL 권한도 있어야 합니다.

   GRANT를 사용하여 데이터 공유에 객체를 추가할 수도 있습니다. 방법은 아래 예시와 같습니다.

   ```
   GRANT SELECT ON TABLE public.tickit_sales_redshift TO DATASHARE salesshare;
   ```

   이 구문은 기능면에서 `ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;`와 동일합니다.

   INCLUDENEW 절을 사용하여 지정된 스키마에서 생성된 새 테이블, 뷰 또는 SQL 사용자 정의 함수(UDF)를 datashare에 추가합니다. 슈퍼 사용자만 각 datashare-스키마 페어에 대해 이 속성을 변경할 수 있습니다.

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
   ```

   Amazon Redshift 콘솔을 사용하여 datashare에서 객체를 추가하거나 제거할 수도 있습니다. 자세한 내용은 [데이터 공유에 데이터 공유 객체 추가](datashare-creation.md#add-datashare-object-console), [datashare에서 datashare 객체 제거](manage-datashare-existing-console.md#remove-datashare-object-console), [계정에 생성된 datashare 편집](manage-datashare-existing-console.md#edit-datashare-console) 섹션을 참조하세요.

1. datashare에서 소비자를 추가하거나 제거합니다. 다음 예에서는 소비자 네임스페이스를 `salesshare`에 추가합니다. 네임스페이스는 계정에 있는 소비자 클러스터의 네임스페이스 전역 고유 식별자(GUID)입니다. 자세한 내용은 [GRANT](r_GRANT.md) 또는 [REVOKE](r_REVOKE.md) 섹션을 참조하세요.

   ```
   GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

   GRANT 문에서 한 명의 datashare 소비자에게만 권한을 부여할 수 있습니다.

   클러스터 슈퍼 사용자와 데이터 공유 객체의 소유자 또는 데이터 공유에 대한 SHARE 권한이 있는 사용자는 데이터 공유에서 소비자를 추가하거나 제거할 수 있습니다. 이를 위해 GRANT USAGE 또는 REVOKE USAGE를 사용합니다.

   현재 보고 있는 클러스터의 네임스페이스를 찾으려면 SELECT CURRENT\$1NAMESPACE 명령을 사용합니다. 동일한 AWS 계정 내에서 다른 클러스터의 네임스페이스를 찾으려면 Amazon Redshift 콘솔 클러스터 세부 정보 페이지로 이동합니다. 해당 페이지에서 새로 추가된 네임스페이스 필드를 찾습니다.

   Amazon Redshift 콘솔을 사용하여 datashare에 대한 데이터 소비자를 추가하거나 제거할 수도 있습니다. 자세한 내용은 [데이터 공유에 데이터 소비자 추가](datashare-creation.md#add-data-consumer-console) 및 [datashare에서 데이터 소비자 제거](manage-datashare-existing-console.md#remove-data-consumer-console) 섹션을 참조하세요.

1. (옵션) datashare에 보안 제한을 추가합니다. 다음 예에서는 퍼블릭 IP 액세스 권한이 있는 소비자 클러스터가 datashare를 읽을 수 있음을 보여줍니다. 자세한 내용은 [ALTER DATASHARE](r_ALTER_DATASHARE.md) 섹션을 참조하세요.

   ```
   ALTER DATASHARE salesshare SET PUBLICACCESSIBLE = TRUE;
   ```

   datashare 생성 후 소비자 유형에 대한 속성을 수정할 수 있습니다. 예를 들어 지정된 datashare의 데이터를 소비하려는 클러스터에 공개적으로 액세스할 수 없도록 정의할 수 있습니다. datashare에 지정된 보안 제한을 충족하지 않는 소비자 클러스터의 쿼리는 쿼리 런타임에 거부됩니다.

   Amazon Redshift 콘솔을 사용하여 datashare를 편집할 수도 있습니다. 자세한 내용은 [계정에 생성된 datashare 편집](manage-datashare-existing-console.md#edit-datashare-console) 섹션을 참조하세요.

1. 클러스터에서 생성된 datashare를 나열하고 datashare의 내용을 살펴봅니다.

   다음 예에서는 `salesshare`라는 datashare의 정보를 보여줍니다.

   ```
   DESC DATASHARE salesshare;
                  
    producer_account  |          producer_namespace          | share_type | share_name | object_type |           object_name          |   include_new
   -------------------+--------------------------------------+------------+------------+-------------+--------------------------------+-------------------
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_users_redshift   |   
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_venue_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_category_redshift|
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_date_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_event_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_listing_redshift |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_sales_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | schema      | public                         |  t
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | view        | public.sales_data_summary_view |
   ```

   다음 예에서는 생산자 클러스터의 아웃바운드 datashare를 보여줍니다.

   ```
   SHOW DATASHARES LIKE 'sales%';
   ```

   출력 결과는 다음과 비슷합니다.

   ```
   share_name | share_owner  | source_database | consumer_database | share_type |     createdate      | is_publicaccessible  | share_acl | producer_account |          producer_namespace 
   -----------+--------------+-----------------+-------------------+------------+---------------------+----------------------+-----------+------------------+---------------------------------------
   salesshare |    100       | dev             |                   |  OUTBOUND  | 2020-12-09 02:27:08 |          True        |           |   123456789012   | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
   ```

   자세한 내용은 [DESC DATASHARE](r_DESC_DATASHARE.md) 및 [SHOW DATASHARES](r_SHOW_DATASHARES.md) 섹션을 참조하세요.

   [SVV\$1DATASHARES](r_SVV_DATASHARES.md), [SVV\$1DATASHARE\$1CONSUMERS](r_SVV_DATASHARE_CONSUMERS.md), 및 [SVV\$1DATASHARE\$1OBJECTS](r_SVV_DATASHARE_OBJECTS.md)를 사용하여 datashare, datashare 내의 객체 및 datashare 소비자를 볼 수도 있습니다.

1. datashare를 삭제합니다. 자세한 내용은 [DROP DATASHARE](r_DROP_DATASHARE.md) 섹션을 참조하세요.

   [DROP DATASHARE](r_DROP_DATASHARE.md)를 사용하여 언제든지 datashare 객체를 삭제할 수 있습니다. 클러스터 슈퍼 사용자와 datashare 소유자는 datashare를 삭제할 수 있습니다.

   다음 예에서는 `salesshare`라는 datashare를 삭제합니다.

   ```
   DROP DATASHARE salesshare;
   ```

   Amazon Redshift 콘솔을 사용하여 datashare를 삭제할 수도 있습니다. 자세한 내용은 [계정에 만들어진 데이터 공유 삭제](manage-datashare-existing-console.md#delete-datashare-console) 섹션을 참조하세요.

1. ALTER DATASHARE를 사용하여 datashare에서 언제든지 객체를 제거합니다. REVOKE USAGE ON을 사용하여 특정 소비자에 대한 datashare 권한을 취소합니다. datashare 내의 객체에 대한 USAGE 권한을 취소하고 모든 소비자 클러스터에 대한 액세스를 즉시 중지합니다. 데이터베이스 및 테이블 나열 등의 datashare 나열과 메타데이터 쿼리는 액세스가 취소된 후 공유 객체를 반환하지 않습니다.

   ```
   ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
   ```

   Amazon Redshift 콘솔을 사용하여 datashare를 편집할 수도 있습니다. 자세한 내용은 [계정에 생성된 datashare 편집](manage-datashare-existing-console.md#edit-datashare-console) 섹션을 참조하세요.

1. 더 이상 소비자와 데이터를 공유하지 않으려면 네임스페이스에서 datashare에 대한 액세스를 취소합니다.

   ```
   REVOKE USAGE ON DATASHARE salesshare FROM NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

   Amazon Redshift 콘솔을 사용하여 datashare를 편집할 수도 있습니다. 자세한 내용은 [계정에 생성된 datashare 편집](manage-datashare-existing-console.md#edit-datashare-console) 섹션을 참조하세요.

## 소비자 관리자로서 읽기 목적으로 데이터 공유
<a name="share-consumer"></a>

1. 사용할 수 있는 datashare를 나열하고 datashare의 내용을 봅니다. 자세한 내용은 [DESC DATASHARE](r_DESC_DATASHARE.md) 및 [SHOW DATASHARES](r_SHOW_DATASHARES.md) 섹션을 참조하세요.

   다음 예에서는 지정된 생산자 네임스페이스의 인바운드 datashare 정보를 보여줍니다. 소비자 관리자로 DESC DATASHARE를 실행할 때 인바운드 데이터 공유를 보려면 NAMESPACE 옵션을 지정해야 합니다.

   ```
   DESC DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   
   
    producer_account  |          producer_namespace          | share_type | share_name | object_type |           object_name           |   include_new
   -------------------+--------------------------------------+------------+------------+-------------+---------------------------------+------------------
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_users_redshift    |     
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_venue_redshift    |     
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_category_redshift |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_date_redshift     |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_event_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_listing_redshift  |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_sales_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | schema      | public                          |    
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | view        | public.sales_data_summary_view  |
   ```

   클러스터 슈퍼 사용자만 이 작업을 수행할 수 있습니다. SVV\$1DATASHARES를 사용하여 datashare를 보고 SVV\$1DATASHARE\$1OBJECTS를 사용하여 datashare 내의 객체를 볼 수도 있습니다.

   다음 예에서는 소비자 클러스터의 인바운드 datashare를 보여줍니다.

   ```
   SHOW DATASHARES LIKE 'sales%';
   
   
    share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account |          producer_namespace
   ------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------
    salesshare |             |                 |                   | INBOUND    |            |         t           |           |   123456789012   | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
   ```

1. Datashare 슈퍼 사용자는 datashare를 참조하는 로컬 데이터베이스를 생성할 수 있습니다. 자세한 내용은 [데이터베이스 생성](r_CREATE_DATABASE.md) 섹션을 참조하세요.

   ```
   CREATE DATABASE sales_db FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

   로컬 데이터베이스의 객체에 대한 액세스를 보다 세밀하게 제어하려면 데이터베이스를 만들 때 WITH PERMISSIONS 절을 사용하세요. 이렇게 하면 4단계에서 데이터베이스의 객체에 객체 수준 권한을 부여할 수 있습니다.

   ```
   CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

   [SVV\$1REDSHIFT\$1DATABASES](r_SVV_REDSHIFT_DATABASES.md) 뷰를 쿼리하여 datashare에서 생성한 데이터베이스를 볼 수 있습니다. 그러나 소비자 클러스터의 로컬 데이터베이스에 연결하고 데이터베이스 간 쿼리를 수행하여 데이터 공유에서 만들어진 데이터베이스의 데이터를 쿼리할 수 있습니다. 기존 datashare에서 생성된 데이터베이스 객체 위에 datashare를 생성할 수 없습니다. 그러나 데이터를 소비자 클러스터의 별도 테이블에 복사하고 필요한 처리를 수행한 다음 생성된 새 객체를 공유할 수 있습니다.

   Amazon Redshift 콘솔을 사용하여 datashare에서 데이터베이스를 생성할 수도 있습니다. 자세한 내용은 [datashare에서 데이터베이스 생성](query-datashare-console.md#create-database-from-datashare-console) 섹션을 참조하세요.

1. (옵션) 소비자 클러스터에서 가져온 소비자 데이터베이스의 특정 스키마를 참조하고 세분화된 권한을 할당할 외부 스키마를 생성합니다. 자세한 내용은 [CREATE EXTERNAL SCHEMA](r_CREATE_EXTERNAL_SCHEMA.md) 섹션을 참조하세요.

   ```
   CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
   ```

1. 필요에 따라 소비자 클러스터의 사용자 및 역할에 데이터 공유에서 생성된 데이터베이스 및 스키마 참조에 대한 권한을 부여합니다. 자세한 내용은 [GRANT](r_GRANT.md) 또는 [REVOKE](r_REVOKE.md) 섹션을 참조하세요.

   ```
   GRANT USAGE ON DATABASE sales_db TO Bob;
   ```

   ```
   GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
   ```

   WITH PERMISSIONS를 사용하지 않고 데이터베이스를 생성한 경우 데이터 공유에서 생성된 전체 데이터베이스에 대한 권한만 사용자와 역할에 할당할 수 있습니다. 경우에 따라 datashare에서 생성된 데이터베이스 객체의 하위 집합에 대한 세분화된 제어가 필요합니다. 이러한 경우 이전 단계에서 설명한 대로 datashare의 특정 스키마를 가리키는 외부 스키마 참조를 생성하고 스키마 수준에서 세분화된 권한을 제공할 수 있습니다.

   또한 공유 객체 위에 후기 바인딩 뷰를 생성하고 이를 사용하여 세분화된 권한을 할당할 수 있습니다. 생산자 클러스터가 필요한 세분성으로 추가 datashare를 생성하도록 할 수도 있습니다.

   2단계에서 WITH PERMISSIONS를 사용하여 데이터베이스를 만든 경우 공유 데이터베이스의 객체에 객체 수준 권한을 할당해야 합니다. USAGE 권한만 있는 사용자는 추가 객체 수준 권한을 부여받을 때까지 WITH PERMISSION을 사용하여 만든 데이터베이스의 객체에 액세스할 수 없습니다.

   ```
   GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
   ```

1. datashare의 공유 객체에서 데이터를 쿼리합니다.

   소비자 데이터베이스 및 소비자 클러스터의 스키마에 대한 권한이 있는 사용자와 역할은 모든 공유 객체의 메타데이터를 탐색할 수 있습니다. 또한 소비자 클러스터에서 로컬 객체를 탐색할 수 있습니다. 이를 위해 JDBC 또는 ODBC 드라이버 또는 SVV\$1ALL 및 SVV\$1REDSHIFT 뷰를 사용합니다.

   생산자 클러스터의 경우 각 스키마 내의 데이터베이스, 테이블 및 뷰에 많은 스키마가 있을 수 있습니다. 소비자 측의 사용자는 datashare를 통해 사용할 수 있는 객체의 하위 집합만 볼 수 있습니다. 이러한 사용자는 생산자 클러스터에서 전체 메타데이터를 볼 수 없습니다. 이 접근 방식은 datashare로 세분화된 메타데이터 보안 제어를 제공하는 데 도움이 됩니다.

   로컬 클러스터 데이터베이스에 계속 연결합니다. 그러나 이제 세 부분으로 구성된 database.schema.table 표기법을 사용하여 datashare에서 생성된 데이터베이스와 스키마에서도 읽을 수도 있습니다. 사용자에게 표시되는 모든 데이터베이스에 걸쳐 쿼리를 수행할 수 있습니다. 이러한 데이터베이스는 클러스터의 로컬 데이터베이스이거나 datashare에서 생성된 데이터베이스일 수 있습니다. 소비자 클러스터는 datashare에서 생성된 데이터베이스에 연결할 수 없습니다.

   전체 자격을 사용하여 데이터에 액세스할 수 있습니다. 자세한 내용은 [데이터베이스 간 쿼리 예제](cross-database_example.md) 섹션을 참조하세요.

   ```
   SELECT * FROM sales_db.public.tickit_sales_redshift ORDER BY 1,2 LIMIT 5;
   
    salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission |      saletime
   ---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------
          1 |      1 |    36861 |   21191 |    7872 |   1875 |       4 |    728.00 |     109.20 | 2008-02-18 02:36:48
          2 |      4 |     8117 |   11498 |    4337 |   1983 |       2 |     76.00 |      11.40 | 2008-06-06 05:00:16
          3 |      5 |     1616 |   17433 |    8647 |   1983 |       2 |    350.00 |      52.50 | 2008-06-06 08:26:17
          4 |      5 |     1616 |   19715 |    8647 |   1986 |       1 |    175.00 |      26.25 | 2008-06-09 08:38:52
          5 |      6 |    47402 |   14115 |    8240 |   2069 |       2 |    154.00 |      23.10 | 2008-08-31 09:17:02
   ```

   공유 객체에는 SELECT 문만 사용할 수 있습니다. 그러나 다른 로컬 데이터베이스에 있는 공유 객체의 데이터를 쿼리하여 소비자 클러스터에 테이블을 생성할 수 있습니다.

   쿼리 외에도 소비자는 공유 객체에 대한 뷰를 생성할 수 있습니다. 후기 바인딩 뷰나 구체화된 뷰만 지원됩니다. Amazon Redshift는 공유 데이터에 대한 일반 뷰를 지원하지 않습니다. 소비자가 생성하는 뷰는 여러 로컬 데이터베이스 또는 datashare에서 생성된 데이터베이스에 걸쳐 있을 수 있습니다. 자세한 내용은 [CREATE VIEW](r_CREATE_VIEW.md) 섹션을 참조하세요.

   ```
   // Connect to a local cluster database
                  
   // Create a view on shared objects and access it. 
   CREATE VIEW sales_data 
   AS SELECT * 
   FROM sales_db.public.tickit_sales_redshift 
   WITH NO SCHEMA BINDING;
   
   SELECT * FROM sales_data;
   ```

# Amazon Redshift 데이터 공유에서 보기 작업
<a name="datashare-views"></a>

생산자 클러스터는 일반, 후기 바인딩 및 구체화된 뷰를 공유할 수 있습니다. 일반 뷰, 후기 바인딩 뷰 또는 구체화된 뷰를 공유할 때 기본 테이블을 공유할 필요가 없습니다. 다음 표에서는 datashare에서 뷰가 지원되는 방식을 보여줍니다.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/redshift/latest/dg/datashare-views.html)

다음 쿼리는 datashare와 함께 지원되는 일반 뷰의 출력을 보여줍니다. 일반 뷰 정의에 대한 자세한 내용은 [CREATE VIEW](r_CREATE_VIEW.md) 섹션을 참조하세요.

```
SELECT * FROM tickit_db.public.myevent_regular_vw 
ORDER BY eventid LIMIT 5;

   eventid  |  eventname
  ----------+-------------
     3835   | LeAnn Rimes
     3967   | LeAnn Rimes
     4856   | LeAnn Rimes
     4948   | LeAnn Rimes     
     5131   | LeAnn Rimes
```

다음 쿼리는 데이터 공유와 함께 지원되는 후기 바인딩 보기의 출력을 보여줍니다. 후기 바인딩 보기 정의에 대한 자세한 내용은 [CREATE VIEW](r_CREATE_VIEW.md) 섹션을 참조하세요.

```
SELECT * FROM tickit_db.public.event_lbv 
ORDER BY eventid LIMIT 5;
         
 eventid | venueid | catid | dateid |          eventname           |      starttime
 --------+---------+-------+--------+------------------------------+---------------------
     1   |   305   |   8   |  1851  |        Gotterdammerung       | 2008-01-25 14:30:00
     2   |   306   |   8   |  2114  |           Boris Godunov      | 2008-10-15 20:00:00
     3   |   302   |   8   |  1935  |              Salome          | 2008-04-19 14:30:00
     4   |   309   |   8   |  2090  |  La Cenerentola (Cinderella) | 2008-09-21 14:30:00
     5   |   302   |   8   |  1982  |          Il Trovatore        | 2008-06-05 19:00:00
```

다음 쿼리는 datashare와 함께 지원되는 구체화된 뷰의 출력을 보여줍니다. 구체화된 뷰 정의에 대한 자세한 내용은 [CREATE MATERIALIZED VIEW](materialized-view-create-sql-command.md) 섹션을 참조하세요.

```
SELECT * FROM tickit_db.public.tickets_mv;

  catgroup | qtysold
 ----------+---------
  Concerts | 195444
    Shows  | 149905
```

생산자 클러스터의 모든 테넌트에서 공통 테이블을 유지 관리할 수 있습니다. 또한 `tenant_id`(`account_id` 또는 `namespace_id`)와 같은 차원 열로 필터링된 데이터의 하위 집합을 소비자 클러스터와 공유할 수 있습니다. 이를 위해 이러한 ID 열(예: `current_aws_account = tenant_id`)에 대한 필터를 사용하여 기본 테이블에 대한 뷰를 정의할 수 있습니다. 소비자 측에서 뷰를 쿼리하면 계정에 적합한 행만 표시됩니다. 이를 위해 Amazon Redshift 컨텍스트 함수 `current_aws_account` 및 `current_namespace`를 사용할 수 있습니다.

다음 쿼리는 현재 Amazon Redshift 클러스터가 있는 계정 ID를 반환합니다. Amazon Redshift에 연결된 경우 이 쿼리를 실행할 수 있습니다.

```
select current_user, current_aws_account;

current_user | current_aws_account
-------------+--------------------
dwuser       |    111111111111
(1row)
```

다음 쿼리는 현재 Amazon Redshift 클러스터의 네임스페이스를 반환합니다. 데이터베이스에 연결되어 있으면 이 쿼리를 실행할 수 있습니다.

```
select current_user, current_namespace; 

current_user | current_namespace
-------------+--------------------------------------
dwuser       | 86b5169f-01dc-4a6f-9fbb-e2e24359e9a8
(1 row)
```

## 데이터 공유의 구체화된 뷰에 대한 증분 새로 고침
<a name="mv_incremental_datashare"></a>

 Amazon Redshift는 기본 테이블 또는 구체화된 뷰가 공유될 때 소비자 데이터 공유의 구체화된 뷰에 대한 증분 새로 고침을 지원합니다. 증분 새로 고침은 Amazon Redshift가 이전 새로 고침 이후에 발생한 기본 테이블의 변경 사항을 식별하고 구체화된 뷰의 해당 레코드만 업데이트하는 작업입니다. 이 동작에 대한 자세한 내용은 [구체화된 뷰 생성](https://docs.aws.amazon.com/redshift/latest/dg/materialized-view-create-sql-command.html#mv_CREATE_MARTERIALIZED_VIEW_datashare)을 참조하세요.

# 데이터 공유에 데이터 레이크 테이블 추가
<a name="create-datashare-external-views"></a>

데이터 공유를 사용하면 데이터 *생산자*는 스키마 및 테이블 등의 세분화된 데이터베이스 객체를 동일한 AWS 계정 또는 다른 계정의 *소비자*와 안전하게 공유할 수 있습니다. 또한 생산자가 리전 전반에서 객체를 공유할 수 있습니다. 이 주제에서는 데이터 레이크, 특히 AWS Glue 데이터 카탈로그에서 데이터 공유로 객체를 추가하는 방법을 설명합니다. 여기에는 2가지 사용 사례가 포함됩니다.
+ *데이터 레이크의 테이블을 참조하는 데이터 공유에 지연 바인딩 뷰 추가* - 이는 Lake Formation과 같은 외부 소스 데이터에 대한 권한 정의 등의 예비 구성이 이미 완료되었을 가능성이 높으므로 소비자에게 편리합니다. 또 다른 이점은 데이터 공유에 추가된 뷰가 Redshift 네이티브 테이블을 사용하여 데이터 레이크의 테이블을 조인할 수 있다는 것입니다.
+ *외부 스키마의 테이블을 데이터 공유에 직접 추가* - 이렇게 하면 추가 계층이나 로직 없이 데이터 레이크의 객체를 소비자가 사용할 수 있습니다. 소비자는 테이블을 쿼리하거나 소비자의 테이블과 조인할 수 있습니다.

이러한 사례는 [CREATE EXTERNAL SCHEMA](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_SCHEMA.html)를 사용하여 Redshift의 AWS 데이터 카탈로그에서 테이블을 참조한 후에 적용됩니다. AWS 데이터 카탈로그의 모든 테이블이 소스일 수 있습니다.

**참고**  
데이터 공유에 추가하는 데이터 레이크 테이블에는 Lake Formation에 등록된 테이블과 AWS Glue 데이터 카탈로그 테이블이 포함될 수 있습니다.

## 외부 스키마와 외부 테이블 생성
<a name="create-datashare-console-external-prelim"></a>

외부 스키마와 외부 테이블을 생성하여 다음 섹션의 데이터 공유에 추가합니다. 이 과정은 예비 단계입니다. 이미 완료했으면 이 섹션을 건너뜁니다.

1. 생산자의 경우 Amazon S3에 저장된 데이터 레이크 데이터를 참조하는 외부 스키마를 생성합니다. 외부 스키마는 AWS Glue Data Catalog를 참조합니다. 샘플의 역할 및 리전은 다음과 같습니다.

   ```
   CREATE EXTERNAL SCHEMA external_schema_name FROM DATA CATALOG
   DATABASE 'glue_database_name'
   IAM_ROLE 'arn:aws:iam::123456789012:role/sample-role'
   REGION 'us-east-1';
   ```

1. 외부 스키마에서 데이터 레이크 테이블을 생성합니다.

   ```
   CREATE EXTERNAL TABLE external_schema_name.sales(
   salesid INTEGER,
   sellerid INTEGER,
   buyerid INTEGER,
   saledate DATE,
   pricepaid DECIMAL(8,2))
   ROW FORMAT delimited
   FIELDS TERMINATED BY '\t'
   STORED AS textfile
   LOCATION 's3://redshift-downloads/tickit/spectrum/sales/';
   ```

   샘플 코드에는 `LOCATION`이 포함됩니다. 폴더가 지정된 `s3://{bucket_name}/{folder}/` 형식이어야 합니다. 폴더의 길이는 최소 문자 한 개 이상으로 구성되어야 합니다. 필요에 따라 하위 폴더를 포함할 수 있습니다. 데이터 레이크에서 테이블을 생성하는 추가 예제를 보려면 CREATE EXTERNAL TABLE [예제](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_EXTERNAL_TABLE_examples.html)를 참조하시기 바랍니다.
**참고**  
공유는 생산자의 IAM 역할이 테이블에 대해 SELECT 액세스 권한을 갖춘 테이블에만 지원됩니다.

## 데이터 레이크 테이블을 데이터 공유에 참조하는 지연 바인딩 뷰 추가
<a name="create-datashare-console-external-views-how-to"></a>

AWS 데이터 카탈로그에서 외부 스키마를 기반으로 테이블을 생성하고 데이터 공유에 테이블을 추가하려는 경우 가장 일반적인 방법은 데이터 레이크의 데이터를 포함하여 생성한 테이블을 참조하는 Redshift 지연 바인딩 뷰를 추가하는 것입니다. 절차에 포함되는 단계는 다음과 같습니다.

1. 이전에 생성한 외부 테이블을 참조하는 지연 바인딩 뷰를 생성합니다.

   ```
   CREATE VIEW lbv AS 
   select * from external_schema_name.sales, other_schema.t1
   WITH NO SCHEMA BINDING;
   ```

1. 데이터 공유에 뷰 스키마를 추가합니다. 이는 지연 바인딩 뷰가 포함된 로컬 스키마입니다.

   ```
   ALTER DATASHARE dsx_datashare ADD SCHEMA public;
   ```

1. 지연 바인딩 뷰에서 참조하는 테이블이 포함된 스키마를 데이터 공유에 추가합니다. 스키마에 로컬 데이터베이스 객체 또는 데이터 레이크의 객체가 포함되어 있는지 여부에 관계없이 데이터 공유에 추가된 뷰에서 참조된 기본 테이블에 스키마를 추가해야 합니다. 지연 바인딩 뷰를 추가하기 전에 먼저 이 스키마를 추가해야 합니다.

   ```
   ALTER DATASHARE dsx_datashare ADD SCHEMA external_schema_name;
   ALTER DATASHARE dsx_datashare ADD SCHEMA other_schema;
   ```

1. SQL 명령을 사용하여 데이터 공유에 뷰를 추가합니다. 테이블 이름에 스키마 접두사가 포함된 것을 알 수 있습니다.

   ```
   ALTER DATASHARE my_datashare ADD TABLE public.lbv;
   ```

1. 뷰 및 스키마가 데이터 공유에 성공적으로 추가되었는지 확인합니다.

   ```
   SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';
   ```

1. 소비자 관리자는 데이터 공유에서 데이터베이스를 생성한 다음, 소비자 사용자에게 사용량을 부여합니다.

단계를 완료한 후 데이터 공유 뷰에 액세스할 수 있는 데이터베이스 소비자 사용자가 데이터를 쿼리할 수 있습니다.

## 데이터 레이크 테이블을 데이터 공유에 직접 추가
<a name="create-datashare-console-external-views-add-spectrum"></a>

외부 스키마의 테이블을 데이터 공유에 추가하는 작업은 뷰를 추가하는 과정과 유사합니다. 이는 소비자가 초기 상태에서 데이터 레이크 테이블을 쿼리하려는 경우 또는 소비자가 소비자 데이터 웨어하우스의 테이블에 조인하려는 경우에 적합합니다. 다음 단계에서는 SQL을 사용하여 데이터 공유에 데이터 레이크 테이블을 추가하는 방법을 보여 줍니다.

1. 이 주제의 첫 번째 섹션에 설명된 대로 외부 스키마와 외부 테이블을 생성합니다.

1. 

   외부 스키마에서 기존 테이블을 검색하여 생성한 테이블을 사용할 수 있는지 확인합니다.

   ```
   SELECT * FROM svv_external_tables WHERE schemaname = 'external_schema_name';
   ```

1. 외부 스키마를 다음과 같이 데이터 공유에 추가합니다.

   ```
   ALTER DATASHARE my_datashare ADD SCHEMA external_schema_name;
   ```

1. 외부 테이블을 데이터 공유에 추가합니다. 테이블 이름에 스키마 접두사가 포함된 것을 알 수 있습니다.

   ```
   ALTER DATASHARE my_datashare ADD TABLE external_schema_name.sales;
   ```

1. 테이블이 데이터 공유에 성공적으로 추가되었는지 확인합니다.

   ```
   SELECT * FROM svv_datashare_objects WHERE share_name = 'my_datashare';
   ```

   더 자세한 설명은 [AWS 계정 내 데이터에 대한 읽기 액세스 권한 공유](https://docs.aws.amazon.com/redshift/latest/dg/within-account.html)를 참조하시기 바랍니다.

1. 공유 데이터를 수신하는 데이터베이스인 소비자에서 관리자는 데이터 공유를 연결하여 사용자가 쿼리할 수 있는 공유 테이블을 제공합니다. 이 단계를 수행하는 방법에 관한 자세한 내용은 [소비자가 다른 계정의 데이터 공유 관리](manage-datashare-other-console.html)를 참조하시기 바랍니다.

관리자가 단계를 완료하면 소비자의 데이터베이스 사용자는 쿼리를 작성하여 공유 테이블에서 데이터를 검색하고 소비자의 다른 테이블과 이를 조인할 수 있습니다.

## 데이터 공유에 데이터 레이크 객체를 추가하기 위한 사용 정보
<a name="create-datashare-console-external-views-considerations"></a>

데이터 공유의 데이터 레이크에서 테이블과 뷰 사용 시 알아야 할 몇 가지 사항이 있습니다.
+ **AWS CloudTrail과 로깅** - 데이터 공유를 통해 공유된 데이터 레이크 테이블에 액세스할 때 데이터 생산자 계정은 AWS CloudTrail 로그를 사용하여 감사할 수 있습니다.
  + **로그 데이터를 사용하여 데이터 액세스 제어** - CloudTrail 로그는 Redshift 데이터 공유 생산자와 소비자를 비롯해 공유 테이블에 액세스하는 사용자에 대한 세부 정보를 기록합니다. 식별자는 `AssumeRole` CloudTrail 로그 아래의 `ExternalId` 필드에서 사용할 수 있습니다. 데이터 소유자는 작업을 통해 IAM 정책의 데이터 액세스에 대한 추가 제한 사항을 구성할 수 있습니다. 정책을 통한 데이터 액세스 정의에 관한 자세한 내용은 [서드 파티가 소유한 AWS 계정 액세스](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_common-scenarios_third-party.html)를 참조하시기 바랍니다.
+ **보안 및 소비자 권한** - Lake Formation 등록 테이블의 경우 Amazon S3 리소스는 Lake Formation에서 보호되며 Lake Formation에서 제공하는 자격 증명 인증을 사용하여 이용 가능하도록 제공됩니다.

## 데이터 레이크 객체를 데이터 공유에 추가하기 위한 결제 고려 사항
<a name="create-datashare-console-external-views-billing"></a>

다음은 데이터 공유에서 데이터 레이크 객체를 저장하고 스캔하는 데 드는 비용을 계산하는 방법을 자세히 설명합니다.
+ 소비자가 데이터 레이크에서 공유 객체를 쿼리하면 스캔 비용이 소비자에게 부과됩니다.
  + 소비자가 프로비저닝 클러스터이면 Redshift는 Redshift Spectrum을 사용하여 Amazon S3 데이터를 스캔합니다. 따라서 Spectrum 비용이 소비자 계정으로 청구됩니다.
  + 소비자가 Amazon Redshift Serverless 작업 그룹이면 Spectrum에 따로 요금이 부과되지 않습니다.
+ 버킷 나열 등의 스토리지 및 작업에 대한 Amazon S3 비용은 각 Amazon S3 버킷을 소유한 계정으로 청구됩니다.

Amazon Redshift Serverless 결제에 관한 자세한 내용은 [Amazon Redshift Serverless 결제](https://docs.aws.amazon.com/redshift/latest/mgmt/serverless-billing.html)를 참고하시기 바랍니다. [Amazon Redshift 요금](https://aws.amazon.com/redshift/pricing/)에서 더 많은 결제 및 요금 정보를 확인할 수 있습니다.

# AWS 계정에서 데이터 공유
<a name="across-account"></a>

AWS 계정 간에 읽기용으로 데이터를 공유할 수 있습니다. AWS 계정 간 데이터 공유는 한 계정 내 데이터 공유와 유사합니다. 차이점은 AWS 계정 간 데이터 공유에는 양방향 핸드셰이크가 필요하다는 것입니다. 생산자 계정 관리자는 소비자 계정에 datashare 액세스 권한을 부여하거나 어떠한 액세스 권한도 부여하지 않도록 선택할 수 있습니다. 권한이 부여된 datashare를 사용하기 위해 소비자 계정 관리자는 datashare를 연결할 수 있습니다. 관리자는 데이터 공ㅇ를 전체 AWS 계정 계정 또는 소비자 계정의 특정 클러스터와 연결하거나 데이터 공유를 거부할 수 있습니다. 계정 내 datashare에 대한 자세한 내용은 [AWS 계정 내 데이터에 대한 읽기 액세스 공유](within-account.md) 섹션을 참조하세요.

데이터 공유에는 동일한 계정 또는 다른 AWS 계정의 네임스페이스인 데이터 소비자가 있을 수 있습니다. 계정 내 공유와 계정 간 공유를 위해 별도의 datashare를 생성할 필요가 없습니다.

계정 간 datashare의 경우 생산자 및 소비자 클러스터를 모두 암호화해야 합니다.

AWS 계정과 데이터를 공유할 때 생산자 관리자는 AWS 계정과 엔터티로 공유합니다. 소비자 관리자는 소비자 계정의 어떤 네임스페이스가 데이터 공유에 액세스할 수 있는지 결정할 수 있습니다.

**Topics**
+ [생산자 관리자 작업](producer-cluster-admin.md)
+ [소비자 계정 관리자 작업](consumer-account-admin.md)
+ [소비자 관리자 작업](consumer-cluster-admin.md)

# 생산자 관리자 작업
<a name="producer-cluster-admin"></a>

Amazon Redshift로 생산자 클러스터에서 관리 작업을 수행하여 데이터 수집 및 로드 처리를 관리합니다.

**생산자 관리자 또는 데이터베이스 소유자인 경우** - 다음 단계를 따릅니다.

1. 클러스터에 datashare를 생성하고 datashare에 datashare 객체를 추가합니다. datashare를 생성하고 datashare 객체를 datashare에 추가하는 방법에 대한 자세한 단계는 [AWS 계정 내 데이터에 대한 읽기 액세스 공유](within-account.md) 섹션을 참조하세요. CREATE DATASHARE 및 ALTER DATASHARE에 대한 자세한 내용은 [CREATE DATASHARE](r_CREATE_DATASHARE.md) 및 [ALTER DATASHARE](r_ALTER_DATASHARE.md) 섹션을 참조하세요.

   다음 예에서는 datashare `salesshare`에 다른 datashare 객체를 추가합니다.

   ```
   -- Add schema to datashare
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   
   -- Add table under schema to datashare
   ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
   
   -- Add view to datashare 
   ALTER DATASHARE salesshare ADD TABLE public.sales_data_summary_view;
   
   -- Add all existing tables and views under schema to datashare (does not include future table)
   ALTER DATASHARE salesshare ADD ALL TABLES in schema public;
   ```

   Amazon Redshift 콘솔을 사용하여 datashare를 생성하거나 편집할 수도 있습니다. 자세한 내용은 [데이터 공유 만들기](datashare-creation.md#create-datashare-console) 및 [계정에 생성된 datashare 편집](manage-datashare-existing-console.md#edit-datashare-console) 섹션을 참조하세요.

1. datashare에 대한 작업 권한을 위임합니다. 자세한 내용은 [GRANT](r_GRANT.md) 또는 [REVOKE](r_REVOKE.md) 섹션을 참조하세요.

   다음 예에서는 `salesshare`의 `dbuser`에 권한을 부여합니다.

   ```
   GRANT ALTER, SHARE ON DATASHARE salesshare TO dbuser;
   ```

   클러스터 슈퍼 사용자와 datashare 소유자는 datashare에 대한 수정 권한을 추가 사용자에게 부여하거나 취소할 수 있습니다.

1. datashare에서 소비자를 추가하거나 제거합니다. 다음 예에서는 `salesshare`에 AWS 계정 ID를 추가합니다. 자세한 내용은 [GRANT](r_GRANT.md) 또는 [REVOKE](r_REVOKE.md) 섹션을 참조하세요.

   ```
   GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '123456789012';
   ```

   GRANT 문에서 한 명의 datashare 소비자에게만 권한을 부여할 수 있습니다.

   클러스터 슈퍼 사용자와 datashare 객체의 소유자 또는 datashare에 대한 SHARE 권한이 있는 사용자는 datashare에서 소비자를 추가하거나 제거할 수 있습니다. 이를 위해 GRANT USAGE 또는 REVOKE USAGE를 사용합니다.

   Amazon Redshift 콘솔을 사용하여 datashare에 대한 데이터 소비자를 추가하거나 제거할 수도 있습니다. 자세한 내용은 [데이터 공유에 데이터 소비자 추가](datashare-creation.md#add-data-consumer-console) 및 [datashare에서 데이터 소비자 제거](manage-datashare-existing-console.md#remove-data-consumer-console) 섹션을 참조하세요.

1. (옵션) 더 이상 소비자와 데이터를 공유하지 않으려면 AWS 계정에서 datashare에 대한 액세스를 취소합니다.

   ```
   REVOKE USAGE ON DATASHARE salesshare FROM ACCOUNT '123456789012';
   ```

**생산자 계정 관리자인 경우** 다음 절차를 따릅니다.

AWS 계정에 사용 권한을 부여한 후 datashare 상태는 `pending_authorization`입니다. 생산자 계정 관리자는 Amazon Redshift 콘솔을 사용하여 datashare 권한을 부여하고 데이터 소비자를 선택해야 합니다.

[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에 로그인합니다. 그런 다음 datashare에 대한 액세스 권한을 부여하거나 제거할 데이터 소비자를 선택합니다. 권한이 부여된 데이터 소비자는 datashare에 대한 작업을 수행하라는 알림을 받습니다. 네임스페이스를 데이터 소비자로 추가하는 경우 권한 부여를 수행할 필요가 없습니다. 권한을 부여 받은 데이터 소비자는 datashare 객체에 액세스하고 소비자 데이터베이스를 생성하여 데이터를 쿼리할 수 있습니다. 자세한 내용은 [datashare에서 권한 부여 또는 제거](authorize-datashare-console.md) 섹션을 참조하세요.

## 데이터에 대한 계정 간 쓰기 권한 공유
<a name="within-account-multi-warehouse-consumer-associate"></a>

Amazon Redshift를 사용하면 AWS 계정 전반에서 데이터를 공유하고 쓰기 권한을 부여하여 팀 또는 조직 간의 협업 및 데이터 공유를 지원할 수 있습니다. 계정 간 데이터 공유를 통해 데이터베이스, 스키마 및 테이블을 만들고 관리하는 데이터 공급자 계정을 설정할 수 있으며, 이 계정에서는 데이터 소비자 계정과 안전하게 공유할 수 있습니다. 다음 섹션에서는 계정 간 데이터 공유를 구성하고 Amazon Redshift에서 쓰기 액세스 권한을 부여하는 프로세스를 보여 줍니다.

# 소비자 계정 관리자 작업
<a name="consumer-account-admin"></a>

Amazon Redshift로 소비자 계정을 관리하고 데이터 웨어하우징 리소스에 대한 액세스를 제어합니다.

**소비자 계정 관리자인 경우** 다음 절차를 따릅니다.

다른 계정에서 공유되는 하나 이상의 데이터 공유를 전체 AWS 계정 또는 계정의 특정 네임스페이스와 연결하려면 Amazon Redshift 콘솔을 사용합니다.

[https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에 로그인합니다. 그런 다음 다른 계정에서 공유되는 하나 이상의 데이터 공유를 전체 AWS 계정 계정 또는 계정별 네임스페이스와 연결합니다. 자세한 내용은 [Amazon Redshift에서 다른 AWS 계정의 데이터 공유 연결](writes-associating.md) 섹션을 참조하세요.

AWS 계정 또는 특정 네임스페이스가 연결된 후 데이터 공유를 사용할 수 있게 됩니다. datashare 연결을 언제든지 변경할 수도 있습니다. 개별 네임스페이스에서 AWS 계정으로 연결을 변경하면 Amazon Redshift가 네임스페이스를 AWS 계정 정보로 덮어씁니다. AWS 계정에서 특정 네임스페이스로 연결을 변경할 때 Amazon Redshift는 AWS 계정 정보를 네임스페이스 정보로 덮어씁니다. 계정의 모든 네임스페이스는 데이터에 액세스할 수 있습니다.

# 소비자 관리자 작업
<a name="consumer-cluster-admin"></a>

Amazon Redshift로 소비자 클러스터에서 관리 작업을 수행하여 데이터 수집 및 로드 처리를 관리합니다.

**소비자 관리자인 경우** - 다음 단계를 따릅니다.

1. 사용할 수 있는 datashare를 나열하고 datashare의 내용을 봅니다. 데이터 공유의 내용은 생산자 관리자가 데이터 공유 권한을 부여받고 소비자 관리자가 데이터 공유를 수락하고 연결한 경우에만 사용할 수 있습니다. 자세한 내용은 [DESC DATASHARE](r_DESC_DATASHARE.md) 및 [SHOW DATASHARES](r_SHOW_DATASHARES.md) 섹션을 참조하세요.

   다음 예에서는 지정된 생산자 네임스페이스의 인바운드 datashare 정보를 보여줍니다. 소비자 관리자로 DESC DATAHSARE를 실행할 때 인바운드 데이터 공유를 보려면 NAMESPACE와 계정 ID를 지정해야 합니다. 아웃바운드 datashare의 경우 datashare 이름을 지정합니다.

   ```
   SHOW DATASHARES LIKE 'sales%';
   
   share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account |          producer_namespace
   -----------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+---------------------------------------
   salesshare |             |                 |                   | INBOUND    |            |        t            |           | 123456789012    | 'dd8772e1-d792-4fa4-996b-1870577efc0d'
   ```

   ```
   DESC DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';
   
   
    producer_account |          producer_namespace          | share_type | share_name | object_type |           object_name
   ------------------+--------------------------------------+------------+------------+-------------+---------------------------------
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_users_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_venue_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_category_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_date_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_event_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_listing_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | table       | public.tickit_sales_redshift
    123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d | INBOUND    | salesshare | schema      | public
   (8 rows)
   ```

   클러스터 슈퍼 사용자만 이 작업을 수행할 수 있습니다. SVV\$1DATASHARES를 사용하여 datashare를 보고 SVV\$1DATASHARE\$1OBJECTS를 사용하여 datashare 내의 객체를 볼 수도 있습니다.

   다음 예에서는 소비자 클러스터의 인바운드 datashare를 보여줍니다.

   ```
   SELECT * FROM SVV_DATASHARES WHERE share_name LIKE 'sales%';
   
   share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account |          producer_namespace
   -----------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+---------------------------------------
   salesshare |             |                 |                   | INBOUND    |            |        t            |           | 123456789012      | 'dd8772e1-d792-4fa4-996b-1870577efc0d'
   ```

   ```
   SELECT * FROM SVV_DATASHARE_OBJECTS WHERE share_name LIKE 'sales%';
    share_type | share_name | object_type |           object_name           | producer_account |          producer_namespace
   ------------+------------+-------------+---------------------------------+------------------+--------------------------------------
    INBOUND    | salesshare | table       | public.tickit_users_redshift    | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_venue_redshift    | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_category_redshift | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_date_redshift     | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_event_redshift    | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_listing_redshift  | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | table       | public.tickit_sales_redshift    | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
    INBOUND    | salesshare | schema      | public                          | 123456789012     | dd8772e1-d792-4fa4-996b-1870577efc0d
   (8 rows)
   ```

1. datashare를 참조하는 로컬 데이터베이스를 생성합니다. datashare에서 데이터베이스를 생성할 때 NAMESPACE와 계정 ID를 지정합니다. 자세한 내용은 [데이터베이스 생성](r_CREATE_DATABASE.md) 섹션을 참조하세요.

   ```
   CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';
   ```

   로컬 데이터베이스의 객체에 대한 액세스를 보다 세밀하게 제어하려면 데이터베이스를 만들 때 WITH PERMISSIONS 절을 사용하세요. 이렇게 하면 4단계에서 데이터베이스의 객체에 객체 수준 권한을 부여할 수 있습니다.

   ```
   CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE 'dd8772e1-d792-4fa4-996b-1870577efc0d';
   ```

   [SVV\$1REDSHIFT\$1DATABASES](r_SVV_REDSHIFT_DATABASES.md) 뷰를 쿼리하여 datashare에서 생성한 데이터베이스를 볼 수 있습니다. 그러나 소비자 클러스터의 로컬 데이터베이스에 연결하고 데이터베이스 간 쿼리를 수행하여 데이터 공유에서 만들어진 데이터베이스의 데이터를 쿼리할 수 있습니다. 기존 datashare에서 생성된 데이터베이스 객체 위에 datashare를 생성할 수 없습니다. 그러나 데이터를 소비자 클러스터의 별도 테이블에 복사하고 필요한 처리를 수행한 다음 생성된 새 객체를 공유할 수 있습니다.

1. (옵션) 소비자 클러스터에서 가져온 소비자 데이터베이스의 특정 스키마를 참조하고 세분화된 권한을 할당할 외부 스키마를 생성합니다. 자세한 내용은 [CREATE EXTERNAL SCHEMA](r_CREATE_EXTERNAL_SCHEMA.md) 섹션을 참조하세요.

   ```
   CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
   ```

1. 필요에 따라 소비자 클러스터의 사용자 또는 역할에 데이터 공유에서 생성된 데이터베이스 및 스키마 참조에 대한 권한을 부여합니다. 자세한 내용은 [GRANT](r_GRANT.md) 또는 [REVOKE](r_REVOKE.md) 섹션을 참조하세요.

   ```
   GRANT USAGE ON DATABASE sales_db TO Bob;
   ```

   ```
   GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
   ```

   WITH PERMISSIONS를 사용하지 않고 데이터베이스를 생성한 경우 데이터 공유에서 생성된 전체 데이터베이스에 대한 권한만 사용자 또는 역할에 할당할 수 있습니다. 경우에 따라 datashare에서 생성된 데이터베이스 객체의 하위 집합에 대한 세분화된 제어가 필요합니다. 이러한 경우 이전 단계에서 설명한 대로 datashare의 특정 스키마를 가리키는 외부 스키마 참조를 생성할 수 있습니다. 그런 다음 스키마 수준에서 세분화된 권한을 제공할 수 있습니다. 또한 공유 객체 위에 후기 바인딩 뷰를 생성하고 이를 사용하여 세분화된 권한을 할당할 수 있습니다. 생산자 클러스터가 필요한 세분성으로 추가 datashare를 생성하도록 할 수도 있습니다. 데이터 공유에서 생성된 데이터베이스에 대해 필요에 따라 원하는 만큼 스키마 참조를 생성할 수 있습니다.

   2단계에서 WITH PERMISSIONS를 사용하여 데이터베이스를 만든 경우 공유 데이터베이스의 객체에 객체 수준 권한을 할당해야 합니다. USAGE 권한만 있는 사용자는 추가 객체 수준 권한을 부여받을 때까지 WITH PERMISSION을 사용하여 만든 데이터베이스의 객체에 액세스할 수 없습니다.

   ```
   GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
   ```

1. datashare의 공유 객체에서 데이터를 쿼리합니다.

   소비자 데이터베이스 및 소비자 클러스터의 스키마에 대한 권한이 있는 사용자와 역할은 모든 공유 객체의 메타데이터를 탐색할 수 있습니다. 또한 소비자 클러스터에서 로컬 객체를 탐색할 수 있습니다. 이를 위해 JDBC 또는 ODBC 드라이버 또는 SVV\$1ALL 및 SVV\$1REDSHIFT 뷰를 사용합니다.

   생산자 클러스터의 경우 각 스키마 내의 데이터베이스, 테이블 및 뷰에 많은 스키마가 있을 수 있습니다. 소비자 측의 사용자는 datashare를 통해 사용할 수 있는 객체의 하위 집합만 볼 수 있습니다. 이러한 사용자는 생산자 클러스터에서 모든 메타데이터를 볼 수 없습니다. 이 접근 방식은 datashare로 세분화된 메타데이터 보안 제어를 제공하는 데 도움이 됩니다.

   로컬 클러스터 데이터베이스에 계속 연결합니다. 그러나 이제 세 부분으로 구성된 database.schema.table 표기법을 사용하여 datashare에서 생성된 데이터베이스와 스키마에서도 읽을 수도 있습니다. 사용자에게 표시되는 모든 데이터베이스에 걸쳐 쿼리를 수행할 수 있습니다. 이러한 데이터베이스는 클러스터의 로컬 데이터베이스이거나 datashare에서 생성된 데이터베이스일 수 있습니다. 소비자 클러스터는 datashare에서 생성된 데이터베이스에 연결할 수 없습니다.

   전체 자격을 사용하여 데이터에 액세스할 수 있습니다. 자세한 내용은 [데이터베이스 간 쿼리 예제](cross-database_example.md) 섹션을 참조하세요.

   ```
   SELECT * FROM sales_db.public.tickit_sales_redshift;
   ```

   공유 객체에는 SELECT 문만 사용할 수 있습니다. 그러나 다른 로컬 데이터베이스에 있는 공유 객체의 데이터를 쿼리하여 소비자 클러스터에 테이블을 생성할 수 있습니다.

   쿼리를 수행하는 것 외에도 소비자는 공유 객체에 대한 보기를 생성할 수 있습니다. 후기 바인딩 보기와 구체화된 보기만 지원됩니다. Amazon Redshift는 공유 데이터에 대한 일반 뷰를 지원하지 않습니다. 소비자가 생성하는 뷰는 여러 로컬 데이터베이스 또는 datashare에서 생성된 데이터베이스에 걸쳐 있을 수 있습니다. 자세한 내용은 [CREATE VIEW](r_CREATE_VIEW.md) 섹션을 참조하세요.

   ```
   // Connect to a local cluster database
                  
   // Create a view on shared objects and access it. 
   CREATE VIEW sales_data 
   AS SELECT * 
   FROM sales_db.public.tickit_sales_redshift 
   WITH NO SCHEMA BINDING;
   
   SELECT * FROM sales_data;
   ```

# AWS 리전에서 데이터 공유
<a name="across-region"></a>

AWS 리전의 Amazon Redshift 클러스터에서 읽기용으로 데이터를 공유할 수 있습니다. 리전 간 데이터 공유를 사용하면 데이터를 수동으로 복사할 필요 없이 AWS 리전 간에 데이터를 공유할 수 있습니다. 데이터를 Amazon S3로 언로드하고 데이터를 새 Amazon Redshift 클러스터로 복사하거나 리전 간 스냅샷 복사를 수행할 필요가 없습니다.

리전 간 데이터 공유를 사용하면 클러스터가 다른 리전에 있는 경우에도 동일한 AWS 계정 또는 다른 AWS 계정의 클러스터 간에 데이터를 공유할 수 있습니다. AWS 계정은 같지만 AWS 리전은 다른 Amazon Redshift 클러스터와 데이터를 공유하는 경우 AWS 계정 내에서 데이터를 공유하는 것과 동일한 워크플로를 따릅니다. 자세한 내용은 [AWS 계정 내 데이터에 대한 읽기 액세스 공유](within-account.md) 섹션을 참조하세요.

데이터를 공유하는 클러스터가 다른 AWS 계정과 AWS 리전에 있는 경우 AWS 계정 간에 데이터를 공유하는 것과 동일한 워크플로를 따르고 소비자 클러스터에 리전 수준 연결을 포함할 수 있습니다. 리전 간 데이터 공유는 전체 AWS 계정, 전체 AWS 리전 또는 AWS 리전 내의 특정 네임스페이스와의 데이터 공유 연결을 지원합니다. AWS 계정 간 데이터 공유에 대한 자세한 내용은 [AWS 계정에서 데이터 공유](across-account.md) 섹션을 참조하세요.

다른 리전의 데이터를 사용하는 경우 소비자는 생산자 리전에서 소비자 리전으로의 리전 간 데이터 전송 요금을 지불합니다.

datashare를 사용하기 위해 소비자 계정 관리자는 다음 세 가지 방법 중 하나로 datashare를 연결할 수 있습니다.
+ 모든 AWS 리전에 걸쳐 있는 전체 AWS 계정과의 연결
+ AWS 계정의 특정 AWS 리전과 연결
+ AWS 리전 내의 특정 네임스페이스와의 연결

관리자가 전체 AWS 계정을 선택하면 계정의 다른 AWS 리전에 있는 모든 기존 및 미래 네임스페이스가 데이터 공유에 액세스할 수 있습니다. 소비자 계정 관리자는 리전 내에서 특정 AWS 리전 또는 네임스페이스를 선택하여 데이터 공유에 대한 액세스 권한을 부여할 수도 있습니다.

**생산자 관리자 또는 데이터베이스 소유자인 경우** 데이터 공유를 만들고, 데이터베이스 객체와 데이터 소비자를 데이터 공유에 추가하고, 데이터 소비자에게 권한을 부여합니다. 자세한 내용은 [생산자 관리자 작업](producer-cluster-admin.md) 섹션을 참조하세요.

**생산자 계정 관리자인 경우** AWS Command Line Interface(AWS CLI) 또는 Amazon Redshift 콘솔을 사용하여 datashare 권한을 부여하고 데이터 소비자를 선택합니다.

**소비자 계정 관리자인 경우** 다음 절차를 따릅니다.

다른 계정에서 공유되는 하나 이상의 데이터 공유를 전체 AWS 계정, 특정 AWS 리전 또는 AWS 리전 내의 네임스페이스에 연결하려면 Amazon Redshift 콘솔을 사용합니다.

리전 간 데이터 공유에서는 AWS Command Line Interface(AWS CLI) 또는 Amazon Redshift 콘솔을 사용하여 특정 AWS 리전의 클러스터를 추가할 수 있습니다.

하나 이상의 AWS 리전을 지정하려면 선택 사항 `consumer-region` 옵션과 함께 `associate-data-share-consumer` CLI 명령을 사용할 수 있습니다.

CLI를 사용할 경우, 다음 예는 `associate-entire-account` 옵션을 사용하여 `Salesshare`을 전체 AWS 계정과 연결합니다. 한 번에 한 리전만 연결할 수 있습니다.

```
aws redshift associate-data-share-consumer
--region {PRODUCER_REGION}
--data-share-arn arn:aws:redshift:{PRODUCER_REGION}:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/Salesshare
--associate-entire-account
```

다음 예에서는`Salesshare`을 미국 동부(오하이오) 리전(`us-east-2`)과 연결합니다.

```
aws redshift associate-data-share-consumer
--region {PRODUCER_REGION}
--data-share-arn arn:aws:redshift:{PRODUCER_REGION}:0123456789012:datashare:{PRODUCER_CLUSTER_NAMESPACE}/Salesshare
--consumer-region 'us-east-2'
```

다음 예에서는 `Salesshare`을 아시아 태평양(시드니) 리전(`ap-southeast-2`)의 다른 AWS 계정에 있는 특정 소비자 네임스페이스와 연결합니다.

```
aws redshift associate-data-share-consumer
--data-share-arn arn:aws:redshift:{PRODUCER_REGION}:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/Salesshare
--consumer-arn 'arn:aws:redshift:ap-southeast-2:{CONSUMER_ACCOUNT}:namespace:{ConsumerImmutableClusterId}'
```

Amazon Redshift 콘솔을 사용하여 데이터 공유를 전체 AWS 계정 또는 AWS 리전 내의 특정 AWS 리전 또는 네임스페이스와 연결할 수 있습니다. 이렇게 하려면 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에 로그인합니다. 그런 다음 다른 계정에서 공유되는 하나 이상의 데이터 공유를 전체 AWS 계정, 전체 AWS 리전 또는 AWS 리전 내의 특정 네임스페이스와 연결합니다. 자세한 내용은 [Amazon Redshift에서 다른 AWS 계정의 데이터 공유 연결](writes-associating.md) 섹션을 참조하세요.

AWS 계정 또는 특정 네임스페이스가 연결된 후 데이터 공유를 사용할 수 있게 됩니다. datashare 연결을 언제든지 변경할 수도 있습니다. 개별 네임스페이스에서 AWS 계정으로 연결을 변경하면 Amazon Redshift가 네임스페이스를 AWS 계정 정보로 덮어씁니다. AWS 계정에서 특정 네임스페이스로 연결을 변경할 때 Amazon Redshift는 AWS 계정 정보를 네임스페이스 정보로 덮어씁니다. 전체 AWS 계정에서 특정 AWS 리전 및 네임스페이스로 연결을 변경할 때 Amazon Redshift는 AWS 계정 정보를 특정 리전 및 네임스페이스 정보로 덮어씁니다.

**소비자 관리자인 경우** 데이터 공유를 참조하는 로컬 데이터베이스를 만들고 필요에 따라 데이터 공유에서 만들어진 데이터베이스에 대한 권한을 소비자 클러스터의 사용자 또는 역할에 부여할 수 있습니다. 공유 객체에 대한 보기를 생성하고, 소비자 클러스터에서 가져온 소비자 데이터베이스의 특정 스키마를 참조하고 세분화된 권한을 할당할 외부 스키마를 생성할 수도 있습니다. 자세한 내용은 [소비자 관리자 작업](consumer-cluster-admin.md) 섹션을 참조하세요.

# 리전 간 데이터 공유를 위한 비용 관리
<a name="cross-region-billing"></a>

Amazon Redshift를 사용하면 AWS 리전 간에 전송되는 데이터의 양을 제한하도록 데이터 공유를 구성하여 리전 간 데이터 공유에 대한 비용 제어를 관리할 수 있습니다. 리전 간 데이터 공유에 대한 비용 제어 관리를 통해 데이터 전송 한도를 설정하고, 데이터 전송 사용량을 모니터링하고, 이러한 한도에 근접하거나 초과할 때 알림을 받게 됩니다.

다른 리전의 데이터를 사용하는 경우 소비자는 생산자 리전에서 소비자 리전으로의 리전 간 데이터 전송 요금을 지불합니다. 데이터 전송 가격은 리전마다 다릅니다. 요금은 모든 성공적인 쿼리 실행에 대해 스캔된 데이터 바이트를 기준으로 합니다. Amazon Redshift 요금에 대한 자세한 내용은 [Amazon Redshift 요금](https://aws.amazon.com/redshift/pricing/)을 참조하세요.

요금은 바이트 단위로 부과되며 바이트는 메가바이트로 반올림됩니다. 쿼리당 최소값은 10MB입니다. 쿼리 사용량에 대한 비용 관리를 설정하고 클러스터에서 쿼리당 전송되는 데이터의 양을 볼 수 있습니다.

리전 간 데이터 공유를 사용한 사용 및 관련 비용을 모니터링하고 제어하기 위해 매일, 매주, 매달 사용 한도를 생성하고 이 한도에 도달하면 Amazon Redshift에서 자동으로 수행할 작업을 정의하여 예산을 예측 가능하게 유지할 수 있습니다.

사용자가 설정한 사용 한도에 따라 Amazon Redshift가 수행하는 작업을 이벤트를 시스템 테이블에 기록하거나 CloudWatch 경보를 전송한 후 Amazon SNS 통해 관리자에게 알리거나 추가 사용을 위해 리전 간 데이터 공유를 해제합니다.

Amazon Redshift 콘솔에서 사용 한도를 정의하려면 클러스터에 대한 **작업(Actions)**에서 **사용량 한도 구성**을 선택합니다. **클러스터 성능(Cluster performance)** 또는 **모니터링(Monitoring)** 탭에서 자동으로 생성된 CloudWatch 메트릭과 함께 사용량 추세를 모니터링하고 정의된 한도를 초과하는 사용량 발생 시 알림을 받을 수 있습니다. 또한 AWS CLI 또는 Amazon Redshift API 동작을 이용하여 프로그램 방식으로 사용 한도를 생성, 수정 및 삭제할 수도 있습니다.

# AWS Data Exchange에서 라이선스가 부여된 Amazon Redshift 데이터 공유
<a name="adx-getting-started"></a>

공급자는 AWS Data Exchange datashare를 생성하고 AWS Data Exchange 제품에 추가할 때 소비자에게 활성 AWS Data Exchange 구독이 있으면 Amazon Redshift에서 최신 데이터를 검색, 구독 및 쿼리할 수 있는 Amazon Redshift의 데이터에 라이선스를 부여할 수 있습니다.

AWS Data Exchange datashare가 AWS Data Exchange 제품에 추가되면 소비자는 구독이 시작될 때 제품의 datashare에 자동으로 액세스할 수 있으며 구독이 활성화되어 있는 한 액세스를 유지합니다.

**Topics**
+ [생산자로서 AWS Data Exchange datashare 작업](adx-getting-started-producer.md)
+ [소비자로서 AWS Data Exchange datashare 작업](#adx-getting-started-consumer)

# 생산자로서 AWS Data Exchange datashare 작업
<a name="adx-getting-started-producer"></a>

Amazon Redshift로 데이터 공유를 생성 및 관리하여 생산자로서 AWS Data Exchange를 사용해 실시간으로 데이터 제품을 공유합니다.

**생산자 관리자인 경우 다음 단계에 따라 Amazon Redshift 콘솔에서 AWS Data Exchange 데이터 공유를 관리합니다.**

1. 클러스터에 datashare를 생성하여 AWS Data Exchange에서 데이터를 공유하고 datashare에 AWS Data Exchange에 대한 액세스 권한을 부여합니다.

   클러스터 슈퍼 사용자와 데이터베이스 소유자는 datashare를 생성할 수 있습니다. 각 datashare는 생성하는 동안 데이터베이스와 연결됩니다. 해당 데이터베이스의 객체만 해당 datashare에서 공유할 수 있습니다. 동일하거나 다른 세부 수준의 객체를 사용하여 동일한 데이터베이스에 여러 datashare를 생성할 수 있습니다. 클러스터에서 생성할 수 있는 datashare 수에는 제한이 없습니다.

   Amazon Redshift 콘솔을 사용하여 datashare를 생성할 수도 있습니다. 자세한 내용은 [데이터 공유 만들기](datashare-creation.md#create-datashare-console) 섹션을 참조하세요.

   CREATE DATASHARE 문을 실행할 때 MANAGEDBY ADX 옵션을 사용하여 암시적으로 AWS Data Exchange에 대한 datashare 액세스 권한을 부여합니다. 이는 AWS Data Exchange에서 이 datashare를 관리함을 나타냅니다. 새 datashare를 생성할 때만 MANAGEDBY ADX 옵션을 사용할 수 있습니다. ALTER DATASHARE 문으로 기존 datashare를 수정하여 MANAGEDBY ADX 옵션을 추가할 수 없습니다. MANAGEDBY ADX 옵션으로 datashare가 생성되면 AWS Data Exchange만 datashare에 액세스하고 관리할 수 있습니다.

   ```
   CREATE DATASHARE salesshare
   [[SET] MANAGEDBY [=] {ADX} ];
   ```

1. datashare에 객체를 추가합니다. 생산자 관리자는 AWS Data Exchange datashare에서 사용할 수 있는 datashare 객체를 계속 관리합니다.

   datashare에 객체를 추가하려면 객체를 추가하기 전에 스키마를 추가합니다. 스키마를 추가할 때 Amazon Redshift는 스키마 아래에 모든 객체를 추가하지 않습니다. 명시적으로 스키마를 추가해야 합니다. 자세한 내용은 [ALTER DATASHARE](r_ALTER_DATASHARE.md) 섹션을 참조하세요.

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;
   ```

   datashare에 뷰를 추가할 수도 있습니다.

   ```
   CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD TABLE public.sales_data_summary_view;
   ```

   ALTER DATASHARE를 사용하여 지정된 스키마에서 스키마, 테이블, 뷰 및 함수를 공유합니다. 슈퍼 사용자, datashare 소유자 또는 datashare에 대한 ALTER 또는 ALL 권한이 있는 사용자는 datashare를 변경하여 객체를 추가하거나 제거할 수 있습니다. 사용자는 datashare에서 객체를 추가하거나 제거할 수 있는 권한이 있어야 합니다. 사용자는 객체 소유자이거나 객체에 대한 SELECT, USAGE 또는 ALL 권한도 있어야 합니다.

   INCLUDENEW 절을 사용하여 지정된 스키마에서 생성된 새 테이블, 뷰 또는 SQL 사용자 정의 함수(UDF)를 datashare에 추가합니다. 슈퍼 사용자만 각 datashare-스키마 페어에 대해 이 속성을 변경할 수 있습니다.

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
   ```

   Amazon Redshift 콘솔을 사용하여 datashare에서 객체를 추가하거나 제거할 수도 있습니다. 자세한 내용은 [데이터 공유에 데이터 공유 객체 추가](datashare-creation.md#add-datashare-object-console), [datashare에서 datashare 객체 제거](manage-datashare-existing-console.md#remove-datashare-object-console), [AWS Data Exchange datashare 편집](manage-adx-datashare-console.md#edit-adx-datashare-console) 섹션을 참조하세요.

1. AWS Data Exchange에 대해 datashare에 대한 액세스 권한을 부여하려면 다음 중 하나를 수행합니다.
   + `aws redshift authorize-data-share` API에서 `ADX` 키워드를 사용하여 AWS Data Exchange에 대해 datashare에 대한 액세스 권한을 명시적으로 부여합니다. 이를 통해 AWS Data Exchange는 서비스 계정의 datashare를 인식하고 소비자를 datashare에 연결하는 것을 관리할 수 있습니다.

     ```
     aws redshift authorize-data-share 
     --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare 
     --consumer-identifier ADX
     ```

     `AuthorizeDataShare` 및 `DeauthorizeDataShare` API에 조건부 키 `ConsumerIdentifier`를 사용하여 AWS Data Exchange가 IAM 정책에서 두 API를 호출하는 것을 명시적으로 허용하거나 거부할 수 있습니다.

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

****  

     ```
     {
         "Version":"2012-10-17",		 	 	 
         "Statement": [
             {
                 "Sid": "VisualEditor0",
                 "Effect": "Deny",
                 "Action": [
                     "redshift:AuthorizeDataShare",
                     "redshift:DeauthorizeDataShare"
                 ],
                 "Resource": "*",
                 "Condition": {
                     "StringEqualsIgnoreCase": {
                         "redshift:ConsumerIdentifier": "ADX"
                     }
                 }
             }
         ]
     }
     ```

------
   + Amazon Redshift 콘솔을 사용하여 AWS Data Exchange datashare 권한을 부여하거나 제거합니다. 자세한 내용은 [datashare에서 권한 부여 또는 제거](authorize-datashare-console.md) 섹션을 참조하세요.
   + 선택적으로 AWS Data Exchange datashare를 AWS Data Exchange 데이터 집합으로 가져올 때 datashare에 대한 액세스 권한을 암시적으로 부여할 수 있습니다.

   AWS Data Exchange datashares에 대한 액세스 권한 부여를 제거하려면 `aws redshift deauthorize-data-share` API 작업에서 `ADX` 키워드를 사용합니다. 이렇게 하면 AWS Data Exchange에서 서비스 계정의 datashare를 인식하고 datashare에서 연결 제거를 관리할 수 있습니다.

   ```
   aws redshift deauthorize-data-share 
   --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare 
   --consumer-identifier ADX
   ```

1. 클러스터에서 생성된 datashare를 나열하고 datashare의 내용을 살펴봅니다.

   다음 예에서는 salesshare라는 datashare의 정보를 보여줍니다. 자세한 내용은 [DESC DATASHARE](r_DESC_DATASHARE.md) 및 [SHOW DATASHARES](r_SHOW_DATASHARES.md) 섹션을 참조하세요.

   ```
   DESC DATASHARE salesshare;
                  
    producer_account  |          producer_namespace          | share_type | share_name | object_type |           object_name          |   include_new
   -------------------+--------------------------------------+------------+------------+-------------+--------------------------------+-------------------
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_users_redshift   |   
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_venue_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_category_redshift|
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_date_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_event_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_listing_redshift |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_sales_redshift   |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | schema      | public                         |  t
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | view        | public.sales_data_summary_view |
   ```

   다음 예에서는 생산자 클러스터의 아웃바운드 datashare를 보여줍니다.

   ```
   SHOW DATASHARES LIKE 'sales%';
   ```

   출력 결과는 다음과 비슷합니다.

   ```
   share_name | share_owner  | source_database | consumer_database | share_type |     createdate      | is_publicaccessible  | share_acl | producer_account |          producer_namespace 
   -----------+--------------+-----------------+-------------------+------------+---------------------+----------------------+-----------+------------------+---------------------------------------
   salesshare |    100       | dev             |                   |  OUTBOUND  | 2020-12-09 02:27:08 |          True        |           |   123456789012   | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
   ```

   자세한 내용은 [DESC DATASHARE](r_DESC_DATASHARE.md) 및 [SHOW DATASHARES](r_SHOW_DATASHARES.md) 섹션을 참조하세요.

   [SVV\$1DATASHARES](r_SVV_DATASHARES.md), [SVV\$1DATASHARE\$1CONSUMERS](r_SVV_DATASHARE_CONSUMERS.md), 및 [SVV\$1DATASHARE\$1OBJECTS](r_SVV_DATASHARE_OBJECTS.md)를 사용하여 datashare, datashare 내의 객체 및 datashare 소비자를 볼 수도 있습니다.

1. datashare를 삭제합니다. DROP DATASHARE 문을 사용하여 다른 AWS 계정과 공유되는 AWS Data Exchange datashare를 삭제하지 않는 것이 좋습니다. 이러한 계정은 dathare에 대한 액세스 권한을 상실합니다. 이 작업은 되돌릴 수 없습니다. 이는 AWS Data Exchange의 데이터 제품 및 서비스 약관을 위반할 수 있습니다. AWS Data Exchange datashare를 삭제하려는 경우 [DROP DATASHARE 사용 참고 사항](r_DROP_DATASHARE.md#r_DROP_DATASHARE_usage) 섹션을 참조하세요.

   다음 예에서는 salesshare라는 datashare를 삭제합니다.

   ```
   DROP DATASHARE salesshare;
   ERROR:  Drop of ADX-managed datashare salesshare requires session variable datashare_break_glass_session_var to be set to value '620c871f890c49'
   ```

   AWS Data Exchange datashare 삭제를 허용하려면 datashare\$1break\$1glass\$1session\$1var 변수를 설정하고 DROP DATASHARE 문을 다시 실행합니다. AWS Data Exchange datashare를 삭제하려는 경우 [DROP DATASHARE 사용 참고 사항](r_DROP_DATASHARE.md#r_DROP_DATASHARE_usage) 섹션을 참조하세요.

   Amazon Redshift 콘솔을 사용하여 datashare를 삭제할 수도 있습니다. 자세한 내용은 [계정에 생성된 AWS Data Exchange datashare 삭제](manage-adx-datashare-console.md#delete-adx-datashare-console) 섹션을 참조하세요.

1. ALTER DATASHARE를 사용하여 datashare에서 언제든지 객체를 제거합니다. REVOKE USAGE ON을 사용하여 특정 소비자에 대한 datashare 권한을 취소합니다. datashare 내의 객체에 대한 USAGE 권한을 취소하고 모든 소비자 클러스터에 대한 액세스를 즉시 중지합니다. 데이터베이스 및 테이블 나열 등의 datashare 나열과 메타데이터 쿼리는 액세스가 취소된 후 공유 객체를 반환하지 않습니다.

   ```
   ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
   ```

   Amazon Redshift 콘솔을 사용하여 datashare를 편집할 수도 있습니다. 자세한 내용은 [AWS Data Exchange datashare 편집](manage-adx-datashare-console.md#edit-adx-datashare-console) 섹션을 참조하세요.

1. AWS Data Exchange datashare에서 GRANT USAGE를 부여하거나 취소합니다. AWS Data Exchange datashare에 대한 GRANT USAGE를 부여하거나 취소할 수 없습니다. 다음 예에서는 AWS Data Exchange에서 관리하는 datashare에 대해 GRANT USAGE 권한이 AWS 계정에 부여된 경우 오류를 보여줍니다.

   ```
   CREATE DATASHARE salesshare MANAGEDBY ADX;
   ```

   ```
   GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '012345678910';
   ERROR:  Permission denied to add/remove consumer to/from datashare salesshare. Datashare consumers are managed by ADX.
   ```

   자세한 내용은 [GRANT](r_GRANT.md) 또는 [REVOKE](r_REVOKE.md) 섹션을 참조하세요.

**생산자 관리자인 경우 다음 단계에 따라 AWS Data Exchange 콘솔에서 데이터 공유 제품을 만들고 게시합니다.**
+ AWS Data Exchange datashare가 생성되면 생산자는 새 데이터 집합을 생성하고, 자산을 가져오고, 개정을 생성하고, 새 제품을 생성 및 게시합니다.

  Amazon Redshift 콘솔을 사용하여 데이터 집합을 생성합니다. 자세한 내용은 [AWS Data Exchange에서 데이터 집합 생성](manage-adx-datashare-console.md#create-dataset-console) 섹션을 참조하세요.

  자세한 내용은 [AWS Data Exchange에서 데이터 제품 제공](https://docs.aws.amazon.com/data-exchange/latest/userguide/providing-data-sets.html)을 참조하세요.

## 소비자로서 AWS Data Exchange datashare 작업
<a name="adx-getting-started-consumer"></a>

Amazon Redshift로 데이터 사본을 저장하거나 관리할 필요 없이 AWS Data Exchange에서 데이터세트에 액세스하고 분석합니다.

**소비자인 경우 다음 단계에 따라 AWS Data Exchange datashare가 포함된 데이터 제품을 검색하고 Amazon Redshift 데이터를 쿼리합니다.**

1. AWS Data Exchange 콘솔에서 AWS Data Exchange datashare가 포함된 데이터 제품을 검색하고 구독합니다.

   구독이 시작되면 AWS Data Exchange datashare가 포함된 데이터 집합에 자산으로 가져온 라이선스가 부여된 Amazon Redshift 데이터에 액세스할 수 있습니다.

   AWS Data Exchange datashare가 포함된 데이터 제품 사용을 시작하는 방법에 대한 자세한 내용은 [AWS Data Exchange에서 데이터 제품 구독](https://docs.aws.amazon.com/data-exchange/latest/userguide/subscribe-to-data-sets.html)을 참조하세요.

1. 필요한 경우 Amazon Redshift 콘솔에서 Amazon Redshift 클러스터를 생성합니다.

   클러스터 생성 방법에 대한 자세한 내용은 [클러스터 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#create-cluster)을 참조하세요.

1. 사용할 수 있는 datashare를 나열하고 datashare의 내용을 봅니다. 자세한 내용은 [DESC DATASHARE](r_DESC_DATASHARE.md) 및 [SHOW DATASHARES](r_SHOW_DATASHARES.md) 섹션을 참조하세요.

   다음 예에서는 지정된 생산자 네임스페이스의 인바운드 datashare 정보를 보여줍니다. 소비자 관리자로 DESC DATASHARE를 실행할 때 인바운드 데이터 공유를 보려면 ACCOUNT 및 NAMESPACE 옵션을 지정해야 합니다.

   ```
   DESC DATASHARE salesshare of ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   
    producer_account  |          producer_namespace          | share_type | share_name | object_type |           object_name           |   include_new
   -------------------+--------------------------------------+------------+------------+-------------+---------------------------------+------------------
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_users_redshift    |     
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_venue_redshift    |     
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_category_redshift |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_date_redshift     |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_event_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_listing_redshift  |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_sales_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | schema      | public                          |    
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | view        | public.sales_data_summary_view  |
   ```

   클러스터 슈퍼 사용자만 이 작업을 수행할 수 있습니다. SVV\$1DATASHARES를 사용하여 datashare를 보고 SVV\$1DATASHARE\$1OBJECTS를 사용하여 datashare 내의 객체를 볼 수도 있습니다.

   다음 예에서는 소비자 클러스터의 인바운드 datashare를 보여줍니다.

   ```
   SHOW DATASHARES LIKE 'sales%';
   
   
    share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account |          producer_namespace
   ------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------
    salesshare |             |                 |                   | INBOUND    |            |         t           |           |   123456789012   | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
   ```

1. datashare를 참조하는 로컬 데이터베이스를 생성합니다. AWS Data Exchange datashare를 위한 로컬 데이터베이스를 생성하려면 ACCOUNT 및 NAMESPACE 옵션을 지정해야 합니다. 자세한 내용은 [데이터베이스 생성](r_CREATE_DATABASE.md) 섹션을 참조하세요.

   ```
   CREATE DATABASE sales_db FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

   로컬 데이터베이스의 객체에 대한 액세스를 보다 세밀하게 제어하려면 데이터베이스를 만들 때 WITH PERMISSIONS 절을 사용하세요. 이렇게 하면 6단계에서 데이터베이스의 객체에 객체 수준 권한을 부여할 수 있습니다.

   ```
   CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF ACCOUNT '123456789012' NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

   [SVV\$1REDSHIFT\$1DATABASES](r_SVV_REDSHIFT_DATABASES.md) 뷰를 쿼리하여 datashare에서 생성한 데이터베이스를 볼 수 있습니다. 그러나 소비자 클러스터의 로컬 데이터베이스에 연결하고 데이터베이스 간 쿼리를 수행하여 데이터 공유에서 만들어진 데이터베이스의 데이터를 쿼리할 수 있습니다. 기존 datashare에서 생성된 데이터베이스 객체 위에 datashare를 생성할 수 없습니다. 그러나 데이터를 소비자 클러스터의 별도 테이블에 복사하고 필요한 처리를 수행한 다음 생성된 새 객체를 공유할 수 있습니다.

   Amazon Redshift 콘솔을 사용하여 datashare에서 데이터베이스를 생성할 수도 있습니다. 자세한 내용은 [datashare에서 데이터베이스 생성](query-datashare-console.md#create-database-from-datashare-console) 섹션을 참조하세요.

1. (옵션) 소비자 클러스터에서 가져온 소비자 데이터베이스의 특정 스키마를 참조하고 세분화된 권한을 할당할 외부 스키마를 생성합니다. 자세한 내용은 [CREATE EXTERNAL SCHEMA](r_CREATE_EXTERNAL_SCHEMA.md) 섹션을 참조하세요.

   ```
   CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE 'sales_db' SCHEMA 'public';
   ```

1. 필요에 따라 소비자 클러스터의 사용자 또는 역할에 데이터 공유에서 생성된 데이터베이스 및 스키마 참조에 대한 권한을 부여합니다. 자세한 내용은 [GRANT](r_GRANT.md) 또는 [REVOKE](r_REVOKE.md) 섹션을 참조하세요.

   ```
   GRANT USAGE ON DATABASE sales_db TO Bob;
   ```

   ```
   GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
   ```

    WITH PERMISSIONS를 사용하지 않고 데이터베이스를 생성한 경우 데이터 공유에서 생성된 전체 데이터베이스에 대한 권한만 사용자와 역할에 할당할 수 있습니다. 경우에 따라 datashare에서 생성된 데이터베이스 객체의 하위 집합에 대한 세분화된 제어가 필요합니다. 이러한 경우 이전 단계에서 설명한 대로 datashare의 특정 스키마를 가리키는 외부 스키마 참조를 생성하고 스키마 수준에서 세분화된 권한을 제공할 수 있습니다.

   또한 공유 객체 위에 후기 바인딩 뷰를 생성하고 이를 사용하여 세분화된 권한을 할당할 수 있습니다. 생산자 클러스터가 필요한 세분성으로 추가 datashare를 생성하도록 할 수도 있습니다. 데이터 공유에서 생성된 데이터베이스에 대해 필요에 따라 원하는 만큼 스키마 참조를 생성할 수 있습니다.

   4단계에서 WITH PERMISSIONS를 사용하여 데이터베이스를 만든 경우 공유 데이터베이스의 객체에 객체 수준 권한을 할당해야 합니다. USAGE 권한만 있는 사용자는 추가 객체 수준 권한을 부여받을 때까지 WITH PERMISSION을 사용하여 만든 데이터베이스의 객체에 액세스할 수 없습니다.

   ```
   GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
   ```

1. datashare의 공유 객체에서 데이터를 쿼리합니다.

   소비자 데이터베이스 및 소비자 클러스터의 스키마에 대한 권한이 있는 사용자와 역할은 모든 공유 객체의 메타데이터를 탐색할 수 있습니다. 또한 소비자 클러스터에서 로컬 객체를 탐색할 수 있습니다. 이를 위해 JDBC 또는 ODBC 드라이버, SHOW 명령, SVV\$1ALL 및 SVV\$1REDSHIFT 뷰를 사용합니다.

   생산자 클러스터의 경우 각 스키마 내의 데이터베이스, 테이블 및 뷰에 많은 스키마가 있을 수 있습니다. 소비자 측의 사용자는 datashare를 통해 사용할 수 있는 객체의 하위 집합만 볼 수 있습니다. 이러한 사용자는 생산자 클러스터에서 전체 메타데이터를 볼 수 없습니다. 이 접근 방식은 datashare로 세분화된 메타데이터 보안 제어를 제공하는 데 도움이 됩니다.

   로컬 클러스터 데이터베이스에 계속 연결합니다. 그러나 이제 세 부분으로 구성된 database.schema.table 표기법을 사용하여 datashare에서 생성된 데이터베이스와 스키마에서도 읽을 수도 있습니다. 사용자에게 표시되는 모든 데이터베이스에 걸쳐 쿼리를 수행할 수 있습니다. 이러한 데이터베이스는 클러스터의 로컬 데이터베이스이거나 datashare에서 생성된 데이터베이스일 수 있습니다. 또는 이러한 소비자 데이터베이스에 직접 연결하고 부분 표기법으로 공유 객체에 대해 쿼리를 실행할 수 있습니다.

   전체 자격을 사용하여 데이터에 액세스할 수 있습니다. 자세한 내용은 [데이터베이스 간 쿼리 예제](cross-database_example.md) 섹션을 참조하세요.

   ```
   SELECT * FROM sales_db.public.tickit_sales_redshift ORDER BY 1,2 LIMIT 5;
   
    salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission |      saletime
   ---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------
          1 |      1 |    36861 |   21191 |    7872 |   1875 |       4 |    728.00 |     109.20 | 2008-02-18 02:36:48
          2 |      4 |     8117 |   11498 |    4337 |   1983 |       2 |     76.00 |      11.40 | 2008-06-06 05:00:16
          3 |      5 |     1616 |   17433 |    8647 |   1983 |       2 |    350.00 |      52.50 | 2008-06-06 08:26:17
          4 |      5 |     1616 |   19715 |    8647 |   1986 |       1 |    175.00 |      26.25 | 2008-06-09 08:38:52
          5 |      6 |    47402 |   14115 |    8240 |   2069 |       2 |    154.00 |      23.10 | 2008-08-31 09:17:02
   ```

   공유 객체에는 SELECT 문만 사용할 수 있습니다. 그러나 다른 로컬 데이터베이스에 있는 공유 객체의 데이터를 쿼리하여 소비자 클러스터에 테이블을 생성할 수 있습니다.

   쿼리 외에도 소비자는 공유 객체에 대한 뷰를 생성할 수 있습니다. 후기 바인딩 뷰나 구체화된 뷰만 지원됩니다. Amazon Redshift는 공유 데이터에 대한 일반 뷰를 지원하지 않습니다. 소비자가 생성하는 뷰는 여러 로컬 데이터베이스 또는 datashare에서 생성된 데이터베이스에 걸쳐 있을 수 있습니다. 자세한 내용은 [CREATE VIEW](r_CREATE_VIEW.md) 섹션을 참조하세요.

   ```
   // Connect to a local cluster database
                  
   // Create a view on shared objects and access it. 
   CREATE VIEW sales_data 
   AS SELECT * 
   FROM sales_db.public.tickit_sales_redshift 
   WITH NO SCHEMA BINDING;
   
   SELECT * FROM sales_data;
   ```

# AWS Lake Formation 관리형 데이터 공유 시작하기
<a name="lf-getting-started"></a>

Amazon Redshift를 사용하면 AWS Lake Formation 관리형 데이터 공유를 통해 AWS 계정 및 Amazon Redshift 클러스터 전반에서 실시간 데이터에 액세스하고 공유할 수 있습니다. AWS Lake Formation 데이터 공유에서는 데이터 공급자가 다른 AWS 계정 및 Amazon Redshift 클러스터를 포함한 모든 소비자와 Amazon S3 데이터 레이크의 실시간 데이터를 안전하게 공유하도록 지원합니다.

# 생산자로서 Lake Formation에서 관리하는 데이터 공유 사용
<a name="lake-formation-getting-started-producer"></a>

Amazon Redshift로 AWS Lake Formation 데이터 공유를 통해 공유된 데이터에 액세스하고 분석합니다. AWS Lake Formation 데이터 공유를 사용하면 기본 데이터를 복사하거나 이전할 필요 없이 AWS 계정과 Amazon Redshift 클러스터 간에 안전한 데이터 공유가 가능합니다.

AWS Lake Formation에 데이터를 공유하면 Amazon Redshift 데이터 공유의 AWS Lake Formation 권한을 중앙에서 정의하고 데이터 공유 내의 객체에 대한 사용자 액세스를 제한할 수 있습니다.

Amazon Redshift가 있으면 AWS Lake Formation 관리형 데이터 공유를 생산자로 사용하여 AWS 계정 및 Amazon Redshift 클러스터 전반에서 실시간 데이터를 안전하게 공유할 수 있습니다. Lake Formation 관리형 데이터 공유는 Amazon Redshift 클러스터의 실시간 데이터를 다른 AWS 계정 및 서비스와 공유할 수 있는 객체입니다.

생산자 클러스터 또는 작업 그룹 관리자는 다음 단계에 따라 Lake Formation Formation에 데이터 공유를 공유하세요.

1. 클러스터에서 데이터 공유를 생성하고 데이터 공유에 액세스할 수 있도록 AWS Lake Formation에 권한을 부여합니다.

   클러스터 슈퍼 사용자와 데이터베이스 소유자만 datashare를 생성할 수 있습니다. 각 datashare는 생성하는 동안 데이터베이스와 연결됩니다. 해당 데이터베이스의 객체만 해당 datashare에서 공유할 수 있습니다. 동일하거나 다른 세부 수준의 객체를 사용하여 동일한 데이터베이스에 여러 datashare를 생성할 수 있습니다. 클러스터에서 생성할 수 있는 datashare 수에는 제한이 없습니다.

   ```
   CREATE DATASHARE salesshare;
   ```

1. 데이터 공유에 객체를 추가합니다. 생산자 클러스터 또는 작업 그룹 관리자는 사용 가능한 데이터 공유 객체를 계속 관리합니다. datashare에 객체를 추가하려면 객체를 추가하기 전에 스키마를 추가합니다. 스키마를 추가할 때 Amazon Redshift는 스키마 아래에 모든 객체를 추가하지 않습니다. 명시적으로 스키마를 추가해야 합니다. 자세한 내용은 [ALTER DATASHARE](https://docs.aws.amazon.com/redshift/latest/dg/r_ALTER_DATASHARE.html)를 참조하세요.

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD ALL TABLES IN SCHEMA PUBLIC;
   ```

   datashare에 뷰를 추가할 수도 있습니다. 지원되는 는 표준 뷰, 후기 바인딩 뷰 및 구체화된 뷰입니다.

   ```
   CREATE VIEW public.sales_data_summary_view AS SELECT * FROM public.tickit_sales_redshift;
   ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift;
   ```

   ALTER DATASHARE를 사용하여 지정된 스키마에서 스키마, 테이블 및 뷰를 공유합니다. 슈퍼 사용자, datashare 소유자 또는 datashare에 대한 ALTER 또는 ALL 권한이 있는 사용자는 datashare를 변경하여 객체를 추가하거나 제거할 수 있습니다. 데이터베이스 사용자는 객체의 소유자이거나 객체에 대한 SELECT, USAGE 또는 ALL 권한이 있어야 합니다.

   INCLUDENEW 절을 사용하여 지정된 스키마에서 생성된 새 테이블과 뷰를 데이터 공유에 추가합니다. 슈퍼 사용자만 각 datashare-스키마 페어에 대해 이 속성을 변경할 수 있습니다.

   ```
   ALTER DATASHARE salesshare ADD SCHEMA PUBLIC;
   ALTER DATASHARE salesshare SET INCLUDENEW = TRUE FOR SCHEMA PUBLIC;
   ```

1. 수퍼유저만 각 데이터 공유-스키마 쌍에 대해 이 속성을 변경할 수 있습니다.

   ```
   GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '012345678910' VIA DATA CATALOG;
   ```

   사용을 취소하려면 다음 명령을 사용하세요.

   ```
   REVOKE USAGE ON DATASHARE salesshare FROM ACCOUNT '012345678910' VIA DATA CATALOG;
   ```

1. `aws redshift authorize-data-share` API 작업을 사용하여 Lake Formation의 데이터 공유에 대한 액세스 권한을 부여합니다. 이를 통해 Lake Formation은 서비스 계정에서 데이터 공유를 인식하고 데이터 공유에 대한 소비자 연결을 관리할 수 있습니다.

   ```
   aws redshift authorize-data-share 
   --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare 
   --consumer-identifier {"DataCatalog/<consumer-account-id>"}
   ```

    Lake Formation에서 관리하는 데이터 공유에서 권한을 제거하려면 `aws redshift deauthorize-data-share` API 작업을 사용하세요. 이렇게 하면 AWS Lake Formation이 서비스 계정에서 데이터 공유를 인식하고 권한 부여를 제거할 수 있습니다.

   ```
   aws redshift deauthorize-data-share 
   --data-share-arn arn:aws:redshift:us-east-1:{PRODUCER_ACCOUNT}:datashare:{PRODUCER_CLUSTER_NAMESPACE}/salesshare 
   --consumer-identifier {"DataCatalog/<consumer-account-id>"}
   ```

    언제든지 생산자 클러스터 또는 작업 그룹 관리자가 더 이상 소비자 클러스터 또는 작업 그룹과 데이터를 공유할 필요가 없다고 판단하면 DROP DATASHARE를 사용하여 데이터 공유를 삭제하거나, 데이터 공유의 인증을 해제하거나, 데이터 공유 권한을 취소할 수 있습니다. Lake Formation의 연결된 권한 및 객체는 자동으로 삭제되지 않습니다.

   ```
   DROP DATASHARE salesshare;
   ```

    데이터 공유를 관리하도록 Lake Formation 계정에 권한을 부여한 후 Lake Formation 관리자는 공유 데이터 공유를 검색하고 데이터 카탈로그 ARN과 데이터 공유를 연결하고, 데이터 공유에 연결되는 데이터베이스를 AWS Glue Data Catalog 카탈로그에서 생성할 수 있습니다. AWS CLI를 사용하여 데이터 공유를 연결하려면 [ associate-data-share-consumer](https://docs.aws.amazon.com/cli/latest/reference/redshift/associate-data-share-consumer.html) 명령을 사용합니다. AWS 리전 간에 데이터 공유를 공유하려면 `associate-data-share-consumer` 명령에 `--region` 파라미터를 지정하거나 AWS 콘솔을 사용하여 데이터 소비자를 선택합니다. 다음 예제는 Lake Formation에서 관리하는 데이터 공유를 여러 리전에서 공유하는 방법을 보여줍니다.

   ```
   aws redshift associate-data-share-consumer --region <region-1>
   --data-share-arn 'arn:aws:redshift:us-east-1:12345678912:datashare:035c45ea-61ce-86f0-8b75-19ac6102c3b7/sample_share' 
   --consumer-arn 'arn:aws:glue:<region-1>:111912345678:catalog'
   ```

   Lake Formation 관리자는 데이터 공유 내의 객체가 Lake Formation 내의 객체에 매핑되는 방법을 정의하는 로컬 리소스도 생성해야 합니다. 데이터 공유 검색 및 로컬 리소스 생성에 대한 자세한 내용은 [Amazon Redshift 데이터 공유의 데이터에 대한 권한 관리](https://docs.aws.amazon.com/lake-formation/latest/dg/data-sharing-redshift.html)를 참조하세요.

# 소비자로서 Lake Formation에서 관리하는 데이터 공유 사용
<a name="lake-formation-getting-started-consumer"></a>

Amazon Redshift를 사용하면 AWS Lake Formation 데이터 공유를 통해 공유된 데이터에 액세스하고 분석할 수 있습니다. 데이터 공유는 다양한 데이터 소스의 테이블 또는 데이터베이스 등 데이터 객체 모음이 포함된 데이터 제품입니다.

 AWS Lake Formation 관리자가 데이터 공유 초대를 검색하고 데이터 공유에 연결되는 AWS Glue Data Catalog에 데이터베이스를 생성한 후, 소비자 클러스터 또는 작업 그룹 관리자는 클러스터를 AWS Glue Data Catalog의 데이터 공유 및 데이터베이스와 연결하고 소비자 클러스터 또는 작업 그룹에 로컬 데이터베이스를 생성하며 Amazon Redshift 소비자 클러스터 또는 작업 그룹의 사용자 및 역할이 쿼리를 시작하도록 액세스 권한을 부여할 수 있습니다. 쿼리 권한을 설정하려면 다음 단계를 따르세요.

1. 필요한 경우 Amazon Redshift 콘솔에서 소비자 클러스터 또는 작업 그룹 역할을 할 Redshift 클러스터를 생성합니다. 클러스터 생성 방법에 대한 자세한 내용은 [클러스터 생성](https://docs.aws.amazon.com/redshift/latest/mgmt/managing-clusters-console.html#create-cluster)을 참조하세요.

1. AWS Glue Data Catalog 소비자 클러스터 또는 작업 그룹 사용자가 액세스할 수 있는 데이터베이스를 나열하려면 [SHOW DATABASES](https://docs.aws.amazon.com/redshift/latest/dg/r_SHOW_DATABASES.html) 명령을 실행합니다.

   ```
   SHOW DATABASES FROM DATA CATALOG [ACCOUNT <account-id>,<account-id2>] [LIKE <expression>]
   ```

   이렇게 하면 AWS Glue 데이터베이스의 ARN, 데이터베이스 이름 및 데이터 공유에 대한 정보와 같이 Data Catalog에서 사용할 수 있는 리소스가 나열됩니다.

1. SHOW DATABASES의 AWS Glue 데이터베이스 ARN을 사용하여 소비자 클러스터 또는 작업 그룹에 로컬 데이터베이스를 생성합니다. 자세한 내용은 [Creating a database](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_DATABASE.html)(데이터베이스 생성)를 참조하세요.

   ```
   CREATE DATABASE lf_db FROM ARN <lake-formation-database-ARN> WITH [NO] DATA CATALOG SCHEMA [<schema>];
   ```

1. 필요에 따라 소비자 클러스터 또는 작업 그룹의 사용자 및 역할에 데이터 공유에서 생성된 데이터베이스 및 스키마 참조에 대한 액세스 권한을 부여합니다. 자세한 내용은 [GRANT](https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html) 또는 [REVOKE](https://docs.aws.amazon.com//redshift/latest/dg/r_REVOKE.html)를 참조하세요. [CREATE USER](https://docs.aws.amazon.com/redshift/latest/dg/r_CREATE_USER.html) 명령으로 생성된 사용자는 Lake Formation에 공유된 데이터 공유의 객체에 액세스할 수 없습니다. Redshift와 Lake Formation 모두에 대한 액세스 권한이 있는 사용자만 Lake Formation과 공유된 데이터 공유에 액세스할 수 있습니다.

   ```
   GRANT USAGE ON DATABASE sales_db TO IAM:Bob;
   ```

    소비자 클러스터 또는 작업 그룹 관리자는 데이터 공유에서 생성된 전체 데이터베이스에 대한 권한만 사용자와 역할에 할당할 수 있습니다. 경우에 따라 datashare에서 생성된 데이터베이스 객체의 하위 집합에 대한 세분화된 제어가 필요합니다.

    또한 공유 객체 위에 후기 바인딩 뷰를 생성하고 이를 사용하여 세분화된 권한을 할당할 수 있습니다. 생산자 클러스터 또는 작업 그룹이 필요한 세분성으로 추가 데이터 공유를 생성하도록 할 수도 있습니다. datashare에서 생성된 데이터베이스에 대한 많은 스키마 참조를 생성할 수 있습니다.

1. 데이터베이스 사용자는 SVV\$1EXTERNAL\$1TABLES 및 SVV\$1EXTERNAL\$1COLUMNS 뷰를 사용하여 AWS Glue 데이터베이스 내의 모든 공유 테이블 또는 열을 찾을 수 있습니다.

   ```
   SELECT * from svv_external_tables WHERE redshift_database_name = 'lf_db';
                           
   SELECT * from svv_external_columns WHERE redshift_database_name = 'lf_db';
   ```

1. datashare의 공유 객체에서 데이터를 쿼리합니다.

   소비자 데이터베이스 및 소비자 클러스터 또는 작업 그룹의 스키마에 대한 권한이 있는 사용자와 역할은 모든 공유 객체의 메타데이터를 탐색할 수 있습니다. 또한 소비자 클러스터 또는 작업 그룹에서 로컬 객체를 탐색할 수 있습니다. 이를 위해 JDBC 또는 ODBC 드라이버나 SVV\$1ALL 및 SVV\$1EXTERNAL 뷰를 사용할 수 있습니다.

   ```
   SELECT * FROM lf_db.schema.table;
   ```

   공유 객체에는 SELECT 문만 사용할 수 있습니다. 그러나 다른 로컬 데이터베이스에 있는 공유 객체의 데이터를 쿼리하여 소비자 클러스터에 테이블을 생성할 수 있습니다.

   ```
   // Connect to a local cluster database
               
   // Create a view on shared objects and access it.
   
   CREATE VIEW sales_data 
   AS SELECT * 
   FROM sales_db.public.tickit_sales_redshift 
   WITH NO SCHEMA BINDING;
   
   SELECT * FROM sales_data;
   ```

# Amazon Redshift에서 데이터 공유를 사용하여 다중 웨어하우스 쓰기 시작하기
<a name="getting-started-datashare-writes"></a>

동일한 AWS 계정에 있는 서로 다른 Amazon Redshift 클러스터 또는 Amazon Redshift Serverless 작업 그룹 내에서 계정과 리전 간에 읽기 및 쓰기 모두에 대해 데이터베이스 객체를 공유할 수 있습니다. 이 주제에 나온 절차는 쓰기 권한이 포함된 데이터 공유 설정 방법을 보여줍니다. 서로 다른 테이블에 대해 SELECT, INSERT, UPDATE 등의 권한을 부여하고 스키마에 대해 USAGE 및 CREATE와 같은 권한을 부여할 수 있습니다.

데이터는 쓰기 트랜잭션을 커밋하자마자 모든 웨어하우스에서 라이브 상태가 되며 사용 가능하게 됩니다. 생산자 계정 관리자는 특정 네임스페이스나 리전에 읽기 전용, 읽기 및 쓰기 또는 데이터에 대한 모든 액세스 권한을 부여할지를 결정할 수 있습니다. 이 절차에서는 프로비저닝된 클러스터 또는 Amazon Redshift Serverless 작업 그룹의 데이터베이스에서 작업하는 것으로 가정합니다.

Amazon Redshift를 사용하면 콘솔 또는 SQL 인터페이스를 사용하여 쓰기로 데이터 공유를 관리하여 Amazon Redshift 클러스터 및 AWS 계정 전반의 데이터에 대한 액세스를 제어하고 데이터를 통제할 수 있습니다. 다음 섹션에서는 Amazon Redshift를 사용하여 쓰기로 데이터 공유를 구성하고 관리하는 방법에 대한 단계별 지침을 제공합니다.

데이터 공유를 사용할 수 있는 리전 목록은 [데이터 공유가 가능한 AWS 리전](data_sharing_regions.md) 섹션을 참조하세요. 쓰기 관련 고려 사항 및 제한 사항은 [Amazon Redshift의 데이터 공유 고려 사항](datashare-considerations.md) 섹션을 참조하세요.

**참고**  
데이터 공유를 사용하는 Amazon Redshift 다중 웨어하우스 쓰기는 현재 트랙 버전 1.0.78881 이상의 프로비저닝된 클러스터에 대한 Amazon Redshift 패치 186과 버전 1.0.78890 이상의 Amazon Redshift Serverless 작업 그룹에 대해서만 지원됩니다.

**Topics**
+ [Amazon Redshift에서 데이터베이스에 연결](connect-database-console-writes.md)
+ [Amazon Redshift에서 새 데이터 공유에 대한 생산자 작업](writes-producer-new.md)
+ [Amazon Redshift에서 새 데이터 공유에 대한 소비자 작업](writes-consumer-new.md)
+ [Amazon Redshift에서 기존 데이터 공유에 대한 생산자 작업](writes-producer-existing.md)
+ [Amazon Redshift에서 기존 데이터 공유에 대한 소비자 작업](writes-consumer-existing.md)

# Amazon Redshift에서 데이터베이스에 연결
<a name="connect-database-console-writes"></a>

Amazon Redshift를 사용하면 데이터 웨어하우스 클러스터에 대한 연결을 설정하고 SQL 쿼리를 실행하거나 데이터를 로드하거나 관리 작업을 수행할 수 있습니다. 데이터베이스에 연결하는 것은 클라이언트 애플리케이션 또는 도구와 Amazon Redshift 클러스터 간에 보안 채널을 만드는 과정입니다. 다음 섹션에서는 Amazon Redshift 데이터베이스에 연결하는 방법에 대한 단계별 지침을 제공합니다.

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

데이터베이스에 연결하여 데이터베이스 내에서 데이터베이스와 객체를 보거나 Amazon Redshift 데이터 웨어하우스에서 데이터 공유를 봅니다. 모든 datashare를 보려면 지정된 데이터베이스에 연결하는 데 사용되는 사용자 자격 증명에 필요한 권한이 있어야 합니다.

로컬 연결이 없는 경우 다음 중 하나를 수행합니다.
+ 생산자 관리자인 경우 프로비저닝된 클러스터의 **클러스터** 탭 또는 Serverless 엔드포인트의 **네임스페이스 구성** 탭으로 이동합니다. 목록에서 해당 클러스터 또는 네임스페이스를 선택합니다.
+ 클러스터 또는 네임스페이스 세부 정보 페이지의 **데이터 공유** 탭에서 **데이터베이스에 연결**을 선택하고 다음 작업 중 하나를 수행합니다.
  + **다른 네임스페이스 및 AWS 계정의 데이터 공유** 섹션에서 다른 클러스터, 네임스페이스 또는 계정의 데이터 공유를 봅니다.
  + **내 클러스터에서 생성된 데이터 공유** 섹션에서 클러스터의 데이터 공유를 봅니다.
+ [**데이터베이스에 연결(Connect to database)**] 창에서 다음 중 하나를 수행합니다.
  + [**새 연결 생성(Create a new connection)**]을 선택하는 경우 [**AWS Secrets Manager**]를 선택하여 저장된 보안 암호로 연결에 대한 액세스를 인증합니다.

    또는 [**임시 자격 증명(Temporary credentials)**]을 선택하여 데이터베이스 자격 증명으로 연결에 대한 액세스를 인증합니다. [**데이터베이스 이름(Database name)**] 및 [**데이터베이스 사용자(Database user)**] 값을 지정합니다.

    **연결**을 선택합니다.
  + [**최근 연결 사용(Use a recent connection)**]을 선택하여 필요한 권한이 있는 다른 데이터베이스에 연결합니다.

    Amazon Redshift에서 자동으로 연결을 설정합니다.

데이터베이스 연결이 설정되면 데이터 공유 만들기, 데이터 공유 쿼리 또는 데이터 공유에서 데이터베이스 만들기를 시작할 수 있습니다.

------

# Amazon Redshift에서 새 데이터 공유에 대한 생산자 작업
<a name="writes-producer-new"></a>

Amazon Redshift가 있으면 데이터 공유를 사용하여 Amazon Redshift 클러스터 또는 AWS 계정 전반에서 실시간 데이터를 공유할 수 있습니다. 데이터 공유는 Amazon Redshift 클러스터의 실시간 데이터를 다른 클러스터 또는 AWS 계정과 공유할 수 있는 소비자-생산자 객체입니다. 데이터 공유를 만들어 액세스에 대한 제어를 유지 관리하고 데이터를 최신 상태로 유지하면서 안전한 데이터 공유가 가능합니다. 다음 섹션에서는 데이터 공유를 만들고 스키마, 테이블 및 뷰와 같은 데이터베이스 객체를 추가하여 실시간 데이터를 안전하게 공유하는 방법에 대한 세부 정보를 제공합니다.

**Topics**
+ [Amazon Redshift에서 데이터 공유 만들기](writes-creating-datashare.md)
+ [Amazon Redshift에서 데이터 공유에 객체 추가](writes-adding-datashare.md)
+ [Amazon Redshift에서 데이터 공유에 데이터 소비자 추가](writes-adding-data-consumer.md)
+ [Amazon Redshift에서 데이터 공유 권한 부여](writes-authorizing.md)

# Amazon Redshift에서 데이터 공유 만들기
<a name="writes-creating-datashare"></a>

데이터 공유는 데이터베이스 객체, 권한 및 소비자가 포함된 논리적 컨테이너입니다. 소비자는 사용자 계정 및 기타 AWS 계정의 Amazon Redshift 프로비저닝된 클러스터 또는 Amazon Redshift Serverless 네임스페이스입니다. 각 데이터 공유는 해당 데이터 공유가 생성된 데이터베이스와 연결되며 해당 데이터베이스의 객체만 추가할 수 있습니다. 생산자 관리자는 아래 절차 중 하나를 수행하여 콘솔과 SQL에서 데이터 공유를 만들 수 있습니다.

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

콘솔에서 클러스터 또는 네임스페이스 세부 정보 페이지의 **데이터 공유** 탭에서 데이터 공유를 만들 수 있습니다. 데이터 공유가 만들어진 후 소비자 관리자로서 소비자의 데이터 공유에서 데이터베이스를 만들 수 있습니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. 데이터베이스 연결이 없는 경우 클러스터 또는 네임스페이스 세부 정보 페이지에서 **데이터 공유** 탭의 **데이터 공유** 섹션에서 데이터베이스에 연결합니다. **내 계정에서 생성된 데이터 공유** 섹션에서 **데이터 공유 생성**을 선택합니다. **데이터 공유 생성** 페이지가 나타납니다.

1. [**datashare 생성(Create datashare)**]을 선택합니다. 로컬 데이터베이스에서만 datashare를 생성할 수 있습니다. 데이터베이스에 연결하지 않은 경우 **데이터베이스에 연결** 페이지가 나타납니다. [데이터베이스로 연결](connect-database-console.md)의 절차에 따라 데이터베이스에 연결합니다. 최근 연결이 있는 경우 **데이터 공유 생성** 페이지가 나타납니다.

1. **Datashare 정보(Datashare information)** 섹션에서 다음 중 하나를 선택합니다.
   + **데이터 공유**를 선택하여 각기 다른 Amazon Redshift 데이터 웨어하우스(프로비저닝된 클러스터 또는 Serverless 엔드포인트)에서 또는 동일한 AWS 계정이나 다른 AWS 계정에서 읽기 또는 쓰기 목적으로 데이터를 공유할 데이터 공유를 만듭니다.
   + **AWS Data Exchange datashare**를 선택하여 AWS Data Exchange를 통해 데이터에 라이선스를 부여할 datashare를 생성합니다.

1. **Datashare 이름(Datashare name)**, **데이터베이스 이름(Database name)** 및 **공개적으로 액세스 가능(Publicly accessible)** 값을 지정합니다. 데이터베이스 이름을 변경할 때 새 데이터베이스 연결을 만듭니다.

1. **범위가 지정된 권한** 또는 **직접 권한** 섹션을 사용하여 데이터 공유에 객체를 추가합니다. 데이터 공유에 객체를 추가하려면 [Amazon Redshift에서 데이터 공유 만들기](#writes-creating-datashare) 섹션을 참조하세요.

1. **데이터 소비자** 섹션에서 Amazon Redshift에 게시하거나 Lake Formation과 데이터 공유 프로세스를 시작하는 AWS Glue Data Catalog에 게시하도록 선택할 수 있습니다. 데이터 공유를 Amazon Redshift에 게시한다는 것은 다른 네임스페이스 또는 소비자 역할을 하는 Amazon Redshift 계정과 데이터를 공유한다는 의미입니다.
**참고**  
데이터 공유가 생성되면 구성을 편집하여 다른 옵션에 게시할 수 없습니다.

1. [**datashare 생성(Create datashare)**]을 선택합니다.

------
#### [ SQL ]

다음 명령을 실행하여 데이터 공유를 생성합니다.

```
CREATE DATASHARE salesshare;
```

데이터 공유를 만들 때 각 데이터 공유는 데이터베이스와 연결됩니다. 해당 데이터베이스의 객체만 해당 datashare에서 공유할 수 있습니다. 동일하거나 다른 세부 수준의 객체를 사용하여 동일한 데이터베이스에 여러 datashare를 생성할 수 있습니다. 클러스터가 생성할 수 있는 datashare 수에는 제한이 없습니다. Amazon Redshift 콘솔을 사용하여 datashare를 생성할 수도 있습니다. 자세한 내용은 [CREATE DATASHARE](r_CREATE_DATASHARE.md) 섹션을 참조하세요.

만드는 중에 데이터 공유에 대한 보안 제한을 제어할 수도 있습니다. 다음 예에서는 퍼블릭 IP 액세스 권한이 있는 소비자가 데이터 공유를 읽을 수 있음을 보여줍니다.

```
CREATE DATASHARE my_datashare [PUBLICACCESSIBLE = TRUE];
```

PUBLICACCESSIBLE = TRUE로 설정하면 소비자가 공개적으로 액세스할 수 있는 클러스터 및 프로비저닝된 작업 그룹에서 데이터 공유를 쿼리할 수 있습니다. 허용하지 않으려면 이 옵션을 생략하거나 명시적으로 false로 설정하세요.

데이터 공유를 만든 후 소비자 유형에 대한 속성을 수정할 수 있습니다. 예를 들어 지정된 datashare의 데이터를 소비하려는 클러스터에 공개적으로 액세스할 수 없도록 정의할 수 있습니다. datashare에 지정된 보안 제한을 충족하지 않는 소비자 클러스터의 쿼리는 쿼리 런타임에 거부됩니다. 자세한 내용은 [ALTER DATASHARE](r_ALTER_DATASHARE.md) 섹션을 참조하세요.

------

# Amazon Redshift에서 데이터 공유에 객체 추가
<a name="writes-adding-datashare"></a>

다음 절차 중 하나를 수행하여 콘솔 및 SQL에서 다양한 유형의 데이터베이스 객체를 추가할 수 있습니다.

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

**범위가 지정된 권한** 또는 **직접 권한** 섹션을 사용하여 데이터 공유에 객체를 추가할 수 있습니다. 객체를 추가할 **범위가 지정된 권한 부여** 또는 **직접 권한 부여**를 선택합니다. **추가** 버튼을 선택하여 객체를 추가합니다. 대화 상자가 나타납니다. 다음 단계를 수행합니다.

1. **범위가 지정된 권한 부여**를 선택하면 데이터베이스 또는 스키마 수준에서 범위가 지정된 권한을 부여할 수 있는 **범위가 지정된 권한 부여** 페이지가 나타납니다. 범위가 지정된 권한이 있는 데이터 공유는 데이터베이스 또는 스키마 내의 모든 현재 및 미래 객체에 대해 지정된 권한을 갖습니다. 자세한 내용은 [범위가 지정된 권한](t_scoped-permissions.md) 항목을 참조하세요.

   1. 그런 다음 **데이터베이스 범위가 지정된 권한**을 선택하여 데이터베이스 수준에서 범위가 지정된 권한을 부여합니다. 범위가 지정된 권한을 부여하면 데이터 공유를 만드는 동안 현재 데이터베이스에 적용됩니다. 이러한 권한은 개별 객체에 부여할 수 없으며 기존 객체와 새 객체(스키마, 테이블, 뷰, UDF) 모두에 적용됩니다.

   1. 스키마, 테이블 또는 뷰 또는 사용자 정의 함수에 범위가 지정된 권한을 하나 이상 선택합니다. 이렇게 하면 데이터베이스의 모든 객체가 소비자에게 부여된 선택된 권한을 갖게 됩니다. 데이터베이스 범위가 지정된 권한 부여를 완료하려면 **부여**를 선택합니다.

   1. 그런 다음 **스키마 범위가 지정된 권한**을 선택하여 스키마 수준에서 범위가 지정된 권한을 부여합니다. 스키마 범위가 지정된 권한을 부여하면 스키마에 추가된 모든 객체가 지정된 데이터 공유 권한을 갖게 됩니다.

   1. 드롭다운에서 데이터 공유에 추가할 스키마를 선택합니다. 한 번에 하나의 스키마만 선택할 수 있습니다. 그런 다음 선택한 스키마에 부여하려는 직접 권한을 하나 이상 선택합니다.

   1. 테이블, 뷰 및 사용자 정의 함수와 같은 스키마 객체에 범위가 지정된 권한을 하나 이상 선택합니다. 스키마의 매칭되는 모든 객체에 권한이 부여됩니다. 이러한 객체는 기존 객체이거나 향후 추가될 객체일 수 있습니다. 적용되면 범위가 지정된 권한을 취소하지 않고 객체에서 권한을 제거할 수 없습니다.

   1. 스키마 범위가 지정된 권한 부여를 완료하려면 **부여**를 선택합니다.

1. **직접 권한 부여**를 선택하면 **직접 권한 부여** 페이지가 나타나 스키마, 테이블, 뷰 또는 사용자 정의 함수와 같은 각 객체 수준에서 직접 권한을 부여할 수 있습니다. 직접 권한을 부여하려면 먼저 데이터 공유에 관련 스키마를 추가해야 합니다.

   1. 그런 다음 스키마에 **직접 권한 부여**를 선택하여 특정 스키마에 직접 권한을 적용합니다. 그런 다음 테이블, 뷰 및 사용자 정의 함수와 같은 스키마 객체의 스키마 권한을 하나 이상 선택하고 데이터 공유에 추가할 스키마를 선택합니다. **부여**를 선택하여 데이터 공유에 스키마 추가를 완료합니다.

   1. 데이터 공유에 스키마를 추가한 후 스키마 객체에 대한 직접 권한 추가를 진행할 수 있습니다. **직접 권한 부여**를 다시 선택합니다. **직접 권한 부여** 페이지가 나타납니다. 그런 다음 스키마 객체에 대한 직접 권한 탭으로 이동합니다.

   1. **테이블 및 뷰에 직접 권한 부여**를 선택하여 이러한 객체에 객체 수준 직접 권한을 부여합니다. 목록에서 필요한 직접 권한 하나 이상과 필요한 객체를 선택합니다. 검색 필드를 사용하여 데이터 공유 객체를 찾습니다. 부여를 선택하여 데이터 공유에 테이블 및 뷰 추가를 완료합니다.

   1. **사용자 정의 함수에 직접 권한 부여**를 선택하여 사용자 정의 함수에 객체 수준 직접 권한을 부여합니다. 목록에서 필요한 직접 권한 하나 이상과 필요한 객체를 선택합니다. 검색 필드를 사용하여 데이터 공유 객체를 찾습니다. **부여**를 선택하여 데이터 공유에 사용자 정의 함수 추가를 완료합니다.

1. **미래 객체를 추가**할지도 선택할 수 있습니다. 스키마에 추가된 데이터 공유 객체를 포함하도록 선택하면 스키마에 추가된 객체가 데이터 공유에 자동으로 추가됩니다.

1. **추가**를 선택하여 섹션을 완료하고 객체를 추가합니다. 추가된 객체는 **데이터 공유 객체**에 나열됩니다.

1. 객체를 추가한 후 개별 객체를 선택하고 권한을 편집할 수 있습니다. 스키마를 선택하면 **범위가 지정된 권한**을 추가할지 묻는 대화 상자가 나타납니다. 이렇게 하면 스키마의 기존 객체 또는 추가된 각 객체가 객체 유형에 적합한 미리 선택된 권한 세트를 갖게 됩니다. 예를 들어 관리자는 추가된 모든 테이블에 SELECT 및 UPDATE 권한을 갖도록 설정할 수 있습니다.

1. 모든 데이터 공유 객체는 **범위가 지정된 권한** 또는 **직접 권한** 섹션에 나열됩니다.

1. **데이터 소비자** 섹션에서 네임스페이스를 추가하거나 AWS 계정을 데이터 공유의 소비자로 추가할 수 있습니다.

1. **데이터 공유 생성**을 선택하여 변경 사항을 저장합니다.

데이터 공유를 만들면 **내 네임스페이스에서 생성된 데이터 공유** 아래 목록에 해당 데이터 공유가 나타납니다. 목록에서 데이터 공유를 선택하면 해당 소비자, 객체 및 기타 속성을 볼 수 있습니다.

------
#### [ SQL ]

SQL을 사용하면 데이터 공유 소유자는 데이터 공유에 추가할 스키마에 대해 USAGE 권한을 부여해야 합니다. GRANT는 스키마에서 CREATE 및 USAGE를 포함하여 다양한 작업을 허용하는 데 사용됩니다. 스키마에는 공유 객체가 들어 있습니다.

```
CREATE SCHEMA myshared_schema1;
CREATE SCHEMA myshared_schema2;
 
GRANT USAGE ON SCHEMA myshared_schema1 TO DATASHARE my_datashare;
GRANT CREATE, USAGE ON SCHEMA myshared_schema2 TO DATASHARE my_datashare;
```

또는 관리자가 ALTER 명령을 계속 실행하여 데이터 공유에 스키마를 추가할 수도 있습니다. 이러한 방식으로 스키마를 추가할 경우 USAGE 권한만 부여됩니다.

```
ALTER DATASHARE my_datashare ADD SCHEMA myshared_schema1;
```

관리자는 스키마를 추가한 후 스키마의 객체에 대해 데이터 공유 권한을 부여할 수 있습니다. 이 권한은 읽기 및 쓰기 권한일 수 있습니다. GRANT ALL 샘플은 모든 권한을 부여하는 방법을 보여줍니다.

```
GRANT SELECT, INSERT ON TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1
TO DATASHARE my_datashare;
                     
GRANT ALL ON TABLE myshared_schema1.table4 TO DATASHARE my_datashare;
```

계속해서 ALTER DATASHARE와 같은 명령을 실행하여 테이블을 추가할 수 있습니다. 이렇게 하면 추가된 객체에 대해 SELECT 권한만 부여됩니다.

```
ALTER DATASHARE my_datashare ADD TABLE myshared_schema1.table1, myshared_schema1.table2, myshared_schema2.table1;
```

데이터베이스 또는 스키마 내 특정 유형의 모든 객체에 대해 범위가 지정된 권한을 데이터 공유에 부여할 수 있습니다. 범위가 지정된 권한이 있는 데이터 공유는 데이터베이스 또는 스키마 내의 모든 현재 및 미래 객체에 대해 지정된 권한을 갖습니다.

 [SVV\$1DATABASE\$1PRIVILEGES](r_SVV_DATABASE_PRIVILEGES.md)에서 데이터베이스 수준 범위 지정 권한의 범위를 볼 수 있습니다. [SVV\$1SCHEMA\$1PRIVILEGES](r_SVV_SCHEMA_PRIVILEGES.md)에서 스키마 수준 범위 지정 권한의 범위를 볼 수 있습니다.

다음은 데이터 공유에 범위가 지정된 권한을 부여할 때 사용하는 구문입니다. 범위가 지정된 권한에 대한 자세한 내용은 [범위가 지정된 권한](t_scoped-permissions.md) 섹션을 참조하세요.

```
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] }FOR SCHEMAS IN
DATABASE db_name 
TO DATASHARE { datashare_name}

GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [PRIVILEGES] } }FOR TABLES IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO DATASHARE { datashare_name}

GRANT { EXECUTE | ALL [ PRIVILEGES ] }FOR FUNCTIONS IN
{SCHEMA schema_name [DATABASE db_name ] | DATABASE db_name }
TO DATASHARE { datashare_name}
```

------

# Amazon Redshift에서 데이터 공유에 데이터 소비자 추가
<a name="writes-adding-data-consumer"></a>

콘솔 또는 SQL을 사용하여 데이터 공유에 데이터 소비자를 하나 이상 추가할 수 있습니다. 데이터 소비자는 Amazon Redshift 클러스터 또는 AWS 계정을 고유하게 식별한 네임스페이스일 수 있습니다.

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

퍼블릭 액세스 권한이 있는 클러스터에서 datashare를 해제하거나 설정하도록 명시적으로 선택해야 합니다.
+ **데이터 공유에 네임스페이스 추가**를 선택합니다. 네임스페이스는 Amazon Redshift 클러스터에 대한 GUID(전역 고유 식별자)입니다.
+ datashare에 **AWS 계정 추가(Add)**를 선택합니다. 지정된 AWS 계정에 datashare에 대한 액세스 권한이 있어야 합니다.

------
#### [ SQL ]

SQL을 사용하여 관리자는 계정의 특정 네임스페이스에 데이터 공유 사용 권한을 부여합니다. ARN의 일부인 네임스페이스 ID는 클러스터 세부 정보 페이지, Amazon Redshift Serverless 네임스페이스 세부 정보 페이지 또는 `SELECT current_namespace;` 명령을 실행하여 찾을 수 있습니다. 자세한 내용은 [CURRENT\$1NAMESPACE](https://docs.aws.amazon.com/redshift/latest/dg/r_CURRENT_NAMESPACE.html)를 참조하세요.

```
GRANT USAGE ON DATASHARE my_datashare TO NAMESPACE '86b5169f-012a-234b-9fbb-e2e24359e9a8';
```

다음은 AWS 계정에 데이터 공유 사용 권한을 부여하는 방법의 예입니다.

```
GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '123456789012';
```

다음은 Lake Formation 계정에 데이터 공유 사용 권한을 부여하는 방법의 예입니다.

```
GRANT USAGE ON DATASHARE salesshare TO ACCOUNT '123456789012' VIA DATA CATALOG;
```

------

# Amazon Redshift에서 데이터 공유 권한 부여
<a name="writes-authorizing"></a>

Amazon Redshift를 사용하면 지정된 소비자에 대한 권한을 부여하여 데이터 공유에 대한 액세스를 제어할 수 있습니다. 데이터 공유를 통해 동일하거나 다른 AWS 계정의 Amazon Redshift 클러스터 간에 실시간 데이터를 공유할 수 있으므로 원활한 방법으로 분석 데이터를 배포하고 사용합니다. 이 섹션에서는 Amazon Redshift에서 데이터 공유에 대한 소비자 액세스 권한을 부여하고 취소하기 위한 단계별 지침을 제공합니다.

**참고**  
네임스페이스를 데이터 소비자로 추가하는 경우 권한 부여를 수행할 필요가 없습니다. 데이터 공유에 대한 권한을 부여하려면 데이터 공유에 데이터 소비자가 하나 이상 추가되어 있어야 합니다.

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

콘솔에서 생산자 관리자는 데이터 공유에 대한 액세스 권한을 부여하거나 제거할 데이터 소비자를 선택할 수 있습니다. 권한이 부여된 데이터 소비자는 datashare에 대한 작업을 수행하라는 알림을 받습니다. 네임스페이스를 데이터 소비자로 추가하는 경우 권한 부여를 수행할 필요가 없습니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **Datashares**를 선택합니다. 여기에서 **데이터 공유 소비자**라는 목록을 볼 수 있습니다. 승인하려는 하나 이상의 소비자 클러스터를 선택합니다. 그런 다음 **권한 부여**(Authorize)를 선택합니다.

1. **계정 권한 부여** 대화 상자가 나타납니다. 몇 가지 권한 부여 유형 중에서 선택할 수 있습니다.
   + **[클러스터 이름 또는 작업 그룹 이름]에 대해 읽기 전용** - 이 옵션은 데이터 공유 생성자가 쓰기 권한을 부여했더라도 소비자는 쓰기 권한을 사용할 수 없다는 뜻입니다.
   + **[클러스터 이름 또는 작업 그룹 이름]에 대해 읽기 및 쓰기** - 이 옵션은 쓰기 권한을 포함하여 생산자가 부여한 모든 권한을 소비자가 사용할 수 있다는 뜻입니다.

1. **저장**을 선택합니다.

소비자로서 AWS Data Exchange 권한을 부여할 수도 있습니다.

1. 데이터 공유를 생성할 때 **Publish to AWS Glue Data Catalog**(Glue 데이터 카탈로그에 게시)를 선택한 경우 데이터 공유 권한을 Lake Formation 계정에만 부여할 수 있습니다.

   AWS Data Exchange datashare의 경우 한 번에 하나의 datashare에만 권한을 부여할 수 있습니다.

   AWS Data Exchange datashare에 권한을 부여하면 AWS Data Exchange 서비스와 datashare를 공유하고 AWS Data Exchange에서 사용자를 대신하여 datashare에 대한 액세스를 관리하도록 허용합니다. AWS Data Exchange에서는 소비자가 제품을 구독할 때 AWS Data Exchange datashare에 소비자 계정을 데이터 소비자로 추가하여 소비자에 대한 액세스를 허용합니다. AWS Data Exchange에는 datashare에 대한 읽기 권한이 없습니다.

1. **저장**을 선택합니다.

권한을 부여 받은 데이터 소비자는 datashare 객체에 액세스하고 소비자 데이터베이스를 생성하여 데이터를 쿼리할 수 있습니다.

------
#### [ API ]

생산자 보안 관리자는 다음을 결정합니다.
+ 다른 계정이 데이터 공유에 액세스할 수 있는지 여부
+ 계정에 데이터 공유에 대한 액세스 권한이 있는 경우, 해당 계정에 쓰기 권한이 있는지 여부

데이터 공유 권한을 부여하려면 다음과 같은 IAM 권한이 필요합니다.

**redshift:AuthorizeDataShare**

CLI 호출 또는 API를 사용하여 사용 및 쓰기 권한을 부여할 수 있습니다.

```
authorize-data-share
--data-share-arn <value>
--consumer-identifier <value>
[--allow-writes | --no-allow-writes]
```

명령에 대한 자세한 내용은 [authorize-data-share](https://docs.aws.amazon.com/cli/latest/reference/redshift/authorize-data-share.html)를 참조하세요.

소비자 식별자는 다음 중 하나일 수 있습니다.
+ 12자리 AWS 계정 ID
+ 네임스페이스 식별자 ARN

**참고**  
권한 부여 단계에서는 쓰기 권한이 부여되지 않습니다. 데이터 공유에 쓰기 권한을 부여하면 데이터 공유 관리자가 부여한 쓰기 권한만 계정에 허용됩니다. 관리자가 쓰기를 허용하지 않는 경우 해당 소비자가 사용할 수 있는 권한은 SELECT, USAGE, EXECUTE뿐입니다.

다른 값으로 `authorize-data-share`를 다시 호출하여 데이터 공유 소비자의 권한 부여를 변경할 수 있습니다. 새로운 권한 부여가 이전의 권한 부여를 덮어씁니다. 즉, 처음에 쓰기 권한을 부여하고 허용했지만 다시 권한을 부여하고 `no-allow-writes`를 지정하거나 아니면 단순히 값을 지정하지 않는 경우 소비자의 쓰기 권한이 취소됩니다.

------

# Amazon Redshift에서 새 데이터 공유에 대한 소비자 작업
<a name="writes-consumer-new"></a>

Amazon Redshift를 사용하면 다른 AWS 계정의 데이터 공유를 사용하여 계정 간 데이터 공유 및 협업을 사용할 수 있습니다. 데이터 공유는 다른 AWS 계정에 있더라도 Amazon Redshift 클러스터 간에 실시간 데이터를 공유하는 안전한 방법입니다. 다음 섹션에서는 액세스를 구성하고, 데이터 공유에서 데이터베이스를 만들고, 객체 수준 권한을 부여하고, 공유 데이터를 쿼리하는 자세한 단계를 제공합니다.

**Topics**
+ [Amazon Redshift에서 다른 AWS 계정의 데이터 공유 연결](writes-associating.md)
+ [Amazon Redshift의 데이터 공유에서 데이터베이스 만들기](writes-creating-database.md)
+ [Amazon Redshift에서 소비자 사용자 및 역할에 객체 수준 권한 부여](writes-granting.md)
+ [Amazon Redshift의 데이터 공유에서 데이터 쿼리](writes-querying.md)

# Amazon Redshift에서 다른 AWS 계정의 데이터 공유 연결
<a name="writes-associating"></a>

Amazon Redshift를 사용하면 다른 AWS 계정에서 공유한 데이터 공유를 연결할 수 있으므로 조직 경계 전반에서 원활하고 안전한 데이터 공유가 가능합니다. 데이터 공유는 하나 이상의 Amazon Redshift 데이터베이스에서 데이터를 캡슐화하는 공유 가능한 데이터베이스 객체입니다. 다음 섹션에서는 데이터 공유를 연결하는 프로세스를 보여줍니다.

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

소비자 관리자는 다른 계정에서 공유되는 하나 이상의 데이터 공유를 전체 AWS 계정 또는 계정의 특정 네임스페이스에 연결할 수 있습니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **Datashares**를 선택합니다. datashare 목록 페이지가 나타납니다. **다른 계정에서(From other accounts)**를 선택합니다.

1. **다른 계정의 datashare(Datashares from other accounts)** 섹션에서 연결할 datashare를 선택하고 **연결(Associate)**을 선택합니다. 데이터 공유 **연결** 페이지가 나타나면 다음 연결 유형 중 하나를 선택합니다.
   + **전체 AWS 계정**을 선택하여 AWS 계정의 여러 AWS 리전에 있는 기존 및 미래 클러스터 네임스페이스를 모두 데이터 공유와 연결합니다.
   + 데이터 공유가 AWS Glue Data Catalog 데이터 카탈로그에 게시된 경우 데이터 공유를 전체 AWS 계정에만 연결할 수 있습니다.

1. 여기에서 **허용된 권한**을 선택할 수 있습니다. 선택할 수 있는 항목은 다음과 같습니다.
   + **읽기 전용** - 읽기 전용을 선택하면 생산자 측에서 UPDATE 또는 INSERT와 같은 쓰기 권한을 부여했더라도 소비자가 해당 권한을 사용할 수 없습니다.
   + **읽기 및 쓰기** - 소비자 데이터 공유 사용자는 생산자가 부여하고 승인한 모든 읽기 및 쓰기 권한을 갖게 됩니다.

1. **특정 AWS 리전 및 클러스터 네임스페이스**를 선택하여 하나 이상의 AWS 리전 및 특정 네임스페이스를 데이터 공유와 연결합니다. **리전 추가**를 선택하여 데이터 공유에 특정 AWS 리전 및 네임스페이스를 추가합니다. **AWS 리전 추가** 페이지가 나타납니다.

1.  **AWS Region**.리전을 선택합니다.

1. 다음 중 하나를 수행하세요.
   + **모든 네임스페이스 추가**를 선택하여 이 리전의 모든 기존 및 향후 네임스페이스를 데이터 공유에 추가합니다.
   + **특정 네임스페이스 추가**를 선택하여 데이터 공유에 이 리전의 특정 네임스페이스를 하나 이상 추가합니다.
   + 네임스페이스를 하나 이상 선택하고 **AWS 리전 추가**를 선택합니다.

1. **연결**을 선택합니다.

생산자가 돌아가서 권한 부여에 대한 설정을 변경할 수 있으며, 이는 소비자의 연결 설정에 영향을 미칠 수 있습니다.

 데이터 공유를 Lake Formation 계정과 연결하는 경우 Lake Formation 콘솔로 이동하여 데이터베이스를 만든 다음 데이터베이스에 대한 권한을 정의합니다. 자세한 내용은 AWS Lake Formation 개발자 안내서의 [Amazon Redshift 데이터 공유에 대한 권한 설정](https://docs.aws.amazon.com/lake-formation/latest/dg/setup-ds-perms.html)을 참조하세요. AWS Glue 데이터베이스 또는 페더레이션 데이터베이스를 생성하면 소비자 클러스터와 함께 쿼리 편집기 v2 또는 선호하는 SQL 클라이언트를 사용하여 데이터를 쿼리할 수 있습니다.

datashare가 연결되면 datashare를 사용할 수 있게 됩니다.

**참고**  
datashare 연결을 언제든지 변경할 수도 있습니다. 특정 AWS 리전 및 네임스페이스에서 전체 AWS 계정으로 연결을 변경할 때 Amazon Redshift는 특정 리전 및 네임스페이스 정보를 AWS 계정 정보로 덮어씁니다. 그러면 AWS 계정의 모든 AWS 리전 및 네임스페이스가 데이터 공유에 액세스할 수 있습니다.

------
#### [ API ]

**참고**  
이 섹션의 단계는 생산자 관리자가 공유 데이터베이스 객체에 대한 특정 작업을 허용하고, 데이터 공유를 다른 계정과 공유하는 경우 생산자 보안 관리자가 액세스를 권한을 부여한 후에 수행됩니다.

소비자 보안 관리자는 다음을 결정합니다.
+ 계정의 모든 네임스페이스인지, 계정 내 특정 리전의 네임스페이스인지 또는 특정 네임스페이스가 데이터 공유에 액세스할 수 있는지 여부
+ 네임스페이스가 데이터 공유에 액세스할 수 있는 경우 해당 네임스페이스에 쓰기 권한이 있는지 여부

소비자 보안 관리자는 데이터 공유를 다음 명령과 연결할 수 있습니다.

```
associate-data-share-consumer
--data-share-arn <value>
--consumer-identifier <value>
[--allow-writes | --no-allow-writes]
```

명령에 대한 자세한 내용은 [associate-data-share-consumer](https://docs.aws.amazon.com/cli/latest/reference/redshift/associate-data-share-consumer.html)를 참조하세요.

소비자 보안 관리자는 데이터 공유를 네임스페이스와 연결할 때 INSERT 및 UPDATE 명령을 사용할 수 있도록 `allow-writes`를 명시적으로 true로 설정해야 합니다. 이렇게 하지 않으면 사용자는 SELECT, USAGE 또는 EXECUTE 권한과 같은 읽기 작업만 수행할 수 있습니다.

다른 값으로 `associate-data-share-consumer`를 다시 호출하여 데이터 공유의 네임스페이스 연결을 변경할 수 있습니다. 새 연결이 이전 연결을 덮어쓰므로 처음에 `allow-writes`를 연결하고 설정했더라도 `no-allow-writes`를 연결하고 지정하거나 아니면 단순히 값을 지정하지 않는 경우 소비자의 쓰기 권한이 취소됩니다.

------

# Amazon Redshift의 데이터 공유에서 데이터베이스 만들기
<a name="writes-creating-database"></a>

Amazon Redshift를 사용하면 데이터 공유를 사용하여 데이터베이스를 만든 후 생산자 클러스터에서 데이터 공유 전반에 걸쳐 데이터를 쿼리하여 실시간 데이터를 복사하거나 전송하지 않고도 안전하게 액세스할 수 있습니다. 다음 단계에서는 Amazon Redshift 환경에서 데이터베이스 설정에 대한 세부 정보를 다룹니다.

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

데이터 공유에서 데이터 쿼리를 시작하기 전에 데이터 공유에서 데이터베이스를 만들어야 합니다. 지정된 datashare에서 데이터베이스를 하나만 생성할 수 있습니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. [**Datashare(Datashares)**]를 선택합니다. datashare 목록이 나타납니다.

1. [**다른 클러스터의 datashare(Datashares from other clusters)**] 섹션에서 [**데이터베이스에 연결(Connect to database)**]을 선택합니다. 자세한 내용은 [데이터베이스로 연결](connect-database-console.md) 섹션을 참조하세요.

1. 데이터베이스를 생성하려는 datashare를 선택하고 [**datashare에서 데이터베이스 생성(Create database from datashare)**]을 선택합니다. datashare에서 데이터베이스 생성 페이지가 나타납니다.

1. [**데이터베이스 이름(Database name)**]에서 데이터베이스 이름을 지정합니다. 데이터베이스 이름은 1\$164자의 영숫자(소문자만)여야 하며 예약어일 수 없습니다.

1. **생성(Create)**을 선택합니다.

데이터베이스를 만든 후 소비자 관리자가 권한을 부여, 승인 및 연결한 경우 데이터베이스의 데이터를 쿼리하거나 쓰기 작업을 수행할 수 있습니다.

------
#### [ API ]

소비자 관리자로서 읽기 목적으로 데이터를 공유하려면 다음 단계를 수행합니다.

1. 사용할 수 있는 datashare를 나열하고 datashare의 내용을 봅니다. 자세한 내용은 [DESC DATASHARE](r_DESC_DATASHARE.md) 및 [SHOW DATASHARES](r_SHOW_DATASHARES.md) 섹션을 참조하세요.

   다음 예에서는 지정된 생산자 네임스페이스의 인바운드 datashare 정보를 보여줍니다. 소비자 관리자로 DESC DATASHARE를 실행할 때 인바운드 데이터 공유를 보려면 NAMESPACE 옵션을 지정해야 합니다.

   ```
   DESC DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   
   
    producer_account  |          producer_namespace          | share_type | share_name | object_type |           object_name           |   include_new
   -------------------+--------------------------------------+------------+------------+-------------+---------------------------------+------------------
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_users_redshift    |     
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_venue_redshift    |     
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_category_redshift |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_date_redshift     |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_event_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_listing_redshift  |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | table       | public.tickit_sales_redshift    |
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | schema      | public                          |    
    123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | INBOUND    | salesshare | view        | public.sales_data_summary_view  |
   ```

   클러스터 슈퍼 사용자만 이 작업을 수행할 수 있습니다. SVV\$1DATASHARES를 사용하여 datashare를 보고 SVV\$1DATASHARE\$1OBJECTS를 사용하여 datashare 내의 객체를 볼 수도 있습니다.

   다음 예에서는 소비자 클러스터의 인바운드 datashare를 보여줍니다.

   ```
   SHOW DATASHARES LIKE 'sales%';
   
   
    share_name | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account |          producer_namespace
   ------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------
    salesshare |             |                 |                   | INBOUND    |            |         t           |           |   123456789012   | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
   ```

1. Datashare 슈퍼 사용자는 datashare를 참조하는 로컬 데이터베이스를 생성할 수 있습니다. 자세한 내용은 [데이터베이스 생성](r_CREATE_DATABASE.md) 섹션을 참조하세요.

   ```
   CREATE DATABASE sales_db FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

   로컬 데이터베이스의 객체에 대한 액세스를 보다 세밀하게 제어하려면 데이터베이스를 만들 때 WITH PERMISSIONS 절을 사용하세요. 이렇게 하면 4단계에서 데이터베이스의 객체에 객체 수준 권한을 부여할 수 있습니다.

   ```
   CREATE DATABASE sales_db WITH PERMISSIONS FROM DATASHARE salesshare OF NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
   ```

   [SVV\$1REDSHIFT\$1DATABASES](r_SVV_REDSHIFT_DATABASES.md) 뷰를 쿼리하여 datashare에서 생성한 데이터베이스를 볼 수 있습니다. 그러나 소비자 클러스터의 로컬 데이터베이스에 연결하고 데이터베이스 간 쿼리를 수행하여 데이터 공유에서 만들어진 데이터베이스의 데이터를 쿼리할 수 있습니다.
**참고**  
기존 datashare에서 생성된 데이터베이스 객체 위에 datashare를 생성할 수 없습니다. 그러나 데이터를 소비자 클러스터의 별도 테이블에 복사하고 필요한 처리를 수행한 다음 생성된 새 객체를 공유할 수 있습니다.

   Amazon Redshift 콘솔을 사용하여 datashare에서 데이터베이스를 생성할 수도 있습니다. 자세한 내용은 [datashare에서 데이터베이스 생성](query-datashare-console.md#create-database-from-datashare-console) 섹션을 참조하세요.

------

# Amazon Redshift에서 소비자 사용자 및 역할에 객체 수준 권한 부여
<a name="writes-granting"></a>

소비자 관리자는 다음 단계를 완료하여 객체 수준에서 소비자 사용자 및 역할에 권한을 부여할 수 있습니다.

------
#### [ SQL ]

WITH PERMISSIONS를 사용하지 않고 데이터베이스를 생성한 경우 데이터 공유에서 생성된 전체 데이터베이스에 대한 권한만 사용자와 역할에 할당할 수 있습니다.

```
GRANT USAGE ON DATABASE sales_db TO Bob;
```

```
GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
```

또한 공유 객체 위에 후기 바인딩 뷰를 생성하고 이를 사용하여 세분화된 권한을 할당할 수 있습니다. 생산자 클러스터가 필요한 세분성으로 추가 datashare를 생성하도록 할 수도 있습니다.

WITH PERMISSIONS을 사용하여 데이터베이스를 만든 경우 공유 데이터베이스의 객체에 객체 수준 권한을 할당해야 합니다. USAGE 권한만 있는 사용자는 추가 객체 수준 권한을 부여받을 때까지 WITH PERMISSION을 사용하여 만든 데이터베이스의 객체에 액세스할 수 없습니다.

```
GRANT SELECT ON sales_db.public.tickit_sales_redshift to Bob;
```

------

다중 웨어하우스 쓰기 권한 부여에 대한 자세한 내용은 [Amazon Redshift에서 데이터 공유에 대한 권한 관리](writes-managing-permissions.md) 섹션을 참조하세요.

# Amazon Redshift의 데이터 공유에서 데이터 쿼리
<a name="writes-querying"></a>

Amazon Redshift를 사용하면 생산자 클러스터에서 데이터 공유 전반에 걸쳐 데이터를 쿼리하여 실시간 데이터를 복사하거나 전송하지 않고도 안전하게 액세스할 수 있습니다. 다음 섹션에서는 Amazon Redshift 환경에서 데이터 공유 쿼리에 대한 세부 정보를 다룹니다.

소비자 데이터베이스 및 소비자 클러스터의 스키마에 대한 권한이 있는 사용자와 역할은 모든 공유 객체의 메타데이터를 탐색할 수 있습니다. 또한 소비자 클러스터에서 로컬 객체를 탐색할 수 있습니다. 이를 위해 JDBC 또는 ODBC 드라이버 또는 SVV\$1ALL 및 SVV\$1REDSHIFT 뷰를 사용합니다.

생산자 클러스터의 경우 각 스키마 내의 데이터베이스, 테이블 및 뷰에 많은 스키마가 있을 수 있습니다. 소비자 측의 사용자는 datashare를 통해 사용할 수 있는 객체의 하위 집합만 볼 수 있습니다. 이러한 사용자는 생산자 클러스터에서 전체 메타데이터를 볼 수 없습니다. 이 접근 방식은 datashare로 세분화된 메타데이터 보안 제어를 제공하는 데 도움이 됩니다.

로컬 클러스터 데이터베이스에 계속 연결합니다. 그러나 이제 세 부분으로 구성된 database.schema.table 표기법을 사용하여 datashare에서 생성된 데이터베이스와 스키마에서도 읽을 수도 있습니다. 사용자에게 표시되는 모든 데이터베이스에 걸쳐 쿼리를 수행할 수 있습니다. 이러한 데이터베이스는 클러스터의 로컬 데이터베이스이거나 datashare에서 생성된 데이터베이스일 수 있습니다. 소비자 클러스터는 datashare에서 생성된 데이터베이스에 연결할 수 없습니다.

전체 자격을 사용하여 데이터에 액세스할 수 있습니다. 자세한 내용은 [데이터베이스 간 쿼리 예제](cross-database_example.md) 섹션을 참조하세요.

------
#### [ SQL ]

```
SELECT * FROM sales_db.public.tickit_sales_redshift ORDER BY 1,2 LIMIT 5;

 salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission |      saletime
---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------
       1 |      1 |    36861 |   21191 |    7872 |   1875 |       4 |    728.00 |     109.20 | 2008-02-18 02:36:48
       2 |      4 |     8117 |   11498 |    4337 |   1983 |       2 |     76.00 |      11.40 | 2008-06-06 05:00:16
       3 |      5 |     1616 |   17433 |    8647 |   1983 |       2 |    350.00 |      52.50 | 2008-06-06 08:26:17
       4 |      5 |     1616 |   19715 |    8647 |   1986 |       1 |    175.00 |      26.25 | 2008-06-09 08:38:52
       5 |      6 |    47402 |   14115 |    8240 |   2069 |       2 |    154.00 |      23.10 | 2008-08-31 09:17:02
```

공유 객체에는 SELECT 문만 사용할 수 있습니다. 그러나 다른 로컬 데이터베이스에 있는 공유 객체의 데이터를 쿼리하여 소비자 클러스터에 테이블을 생성할 수 있습니다.

------

# Amazon Redshift에서 기존 데이터 공유에 대한 생산자 작업
<a name="writes-producer-existing"></a>

Amazon Redshift를 사용하면 기존 데이터 공유를 관리하여 Amazon Redshift 클러스터의 데이터에 대한 액세스를 제어할 수 있습니다. 다음 섹션에서는 데이터 공유 객체 수정, 데이터 공유 권한 관리, 데이터 공유 속성 업데이트에 대한 단계별 가이드를 제공하여 Amazon Redshift 환경에서 데이터 액세스를 효과적으로 제어하고 감사할 수 있습니다.

**Topics**
+ [Amazon Redshift에서 데이터 공유 보기](writes-viewing.md)
+ [Amazon Redshift에서 자신의 계정에서 만들어진 데이터 공유 편집](writes-editing.md)
+ [Amazon Redshift의 데이터 공유에서 권한 부여 제거](writes-removing-authorization.md)
+ [Amazon Redshift의 데이터 공유에서 데이터 공유 객체 제거](writes-removing-datashare-object.md)
+ [Amazon Redshift의 데이터 공유에서 데이터 소비자 제거](writes-removing-data-consumer.md)
+ [Amazon Redshift에서 계정에서 만들어진 데이터 공유 삭제](writes-deleting.md)

# Amazon Redshift에서 데이터 공유 보기
<a name="writes-viewing"></a>

콘솔 또는 SQL을 사용하여 데이터 공유를 볼 수 있습니다.

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

**데이터 공유** 또는 **클러스터** 탭에서 데이터 공유를 볼 수 있습니다.
+ **데이터 공유** 탭을 사용하여 자신의 계정이나 다른 계정의 데이터 공유를 나열합니다.
  + 계정에서 생성된 datashare를 보려면 [**내 계정에서(In my account)**]를 선택하고 보려는 datashare를 선택합니다.
  + 다른 계정에서 공유되는 datashare를 보려면 [**다른 계정에서(From other accounts)**]를 선택하고 보려는 datashare를 선택합니다.
+ **클러스터** 탭을 사용하여 자신의 클러스터나 다른 클러스터의 데이터 공유를 나열합니다.

  먼저 데이터베이스에 연결합니다. 그런 다음 **다른 클러스터의 데이터 공유** 또는 **내 클러스터에서 생성된 데이터 공유** 섹션에서 데이터 공유를 선택하여 세부 정보를 봅니다.

------
#### [ SQL ]

클러스터에서 만들어진 데이터 공유를 나열하고 데이터 공유의 내용을 살펴볼 수 있습니다.

다음 예에서는 `salesshare`라는 datashare의 정보를 보여줍니다.

```
DESC DATASHARE salesshare;
               
 producer_account  |          producer_namespace          | share_type | share_name | object_type |           object_name          |   include_new
-------------------+--------------------------------------+------------+------------+-------------+--------------------------------+-------------------
 123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_users_redshift   |   
 123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_venue_redshift   |
 123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_category_redshift|
 123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_date_redshift    |
 123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_event_redshift   |
 123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_listing_redshift |
 123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | table       | public.tickit_sales_redshift   |
 123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | schema      | public                         |  t
 123456789012      | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d | OUTBOUND   | salesshare | view        | public.sales_data_summary_view |
```

다음 예에서는 생산자 클러스터의 아웃바운드 datashare를 보여줍니다.

```
SHOW DATASHARES LIKE 'sales%';
```

출력 결과는 다음과 비슷합니다.

```
share_name | share_owner  | source_database | consumer_database | share_type |     createdate      | is_publicaccessible  | share_acl | producer_account |          producer_namespace 
-----------+--------------+-----------------+-------------------+------------+---------------------+----------------------+-----------+------------------+---------------------------------------
salesshare |    100       | dev             |                   |  OUTBOUND  | 2020-12-09 02:27:08 |          True        |           |   123456789012   | 13b8833d-17c6-4f16-8fe4-1a018f5ed00d
```

자세한 내용은 [DESC DATASHARE](r_DESC_DATASHARE.md) 및 [SHOW DATASHARES](r_SHOW_DATASHARES.md) 섹션을 참조하세요.

[SVV\$1DATASHARES](r_SVV_DATASHARES.md), [SVV\$1DATASHARE\$1CONSUMERS](r_SVV_DATASHARE_CONSUMERS.md), 및 [SVV\$1DATASHARE\$1OBJECTS](r_SVV_DATASHARE_OBJECTS.md)를 사용하여 datashare, datashare 내의 객체 및 datashare 소비자를 볼 수도 있습니다.

------

# Amazon Redshift에서 자신의 계정에서 만들어진 데이터 공유 편집
<a name="writes-editing"></a>

콘솔과 SQL을 사용하여 자신의 계정에서 만들어진 데이터 공유를 편집할 수 있습니다.

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

콘솔에서 다음 단계를 따라 먼저 데이터베이스에 연결하여 계정에서 만들어진 데이터 공유 목록을 봅니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. [**Datashare(Datashares)**]를 선택합니다.

1. [**내 계정에 생성된 datashare(Datashares created in my account)**] 섹션에서 [**데이터베이스에 연결(Connect to database)**]을 선택합니다.

1. 편집할 datashare를 선택한 다음 **편집(Edit)**을 선택합니다. datashare 세부 정보 페이지가 나타납니다.

1. [**datashare 객체(Datashare objects)**] 또는 [**데이터 소비자(Data consumers)**] 섹션에서 변경합니다.

1. **변경 사항 저장**을 선택합니다. 변경 사항으로 datashare가 업데이트됩니다.
**참고**  
데이터 공유를 AWS Glue Data Catalog에 게시하도록 선택한 경우 데이터 공유를 다른 Amazon Redshift 계정에 게시하도록 구성을 편집할 수 없습니다.

------
#### [ SQL ]

ALTER DATASHARE를 사용하여 datashare에서 언제든지 객체를 제거합니다. 스키마를 제거하려면 다음 명령을 사용합니다.

```
ALTER DATASHARE salesshare REMOVE SCHEMA PUBLIC;
```

테이블을 제거하려면 다음 명령을 사용합니다.

```
ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
```

REVOKE USAGE ON을 사용하여 특정 소비자에 대한 datashare 권한을 취소합니다. datashare 내의 객체에 대한 USAGE 권한을 취소하고 모든 소비자 클러스터에 대한 액세스를 즉시 중지합니다. 데이터베이스 및 테이블 나열 등의 datashare 나열과 메타데이터 쿼리는 액세스가 취소된 후 공유 객체를 반환하지 않습니다. 더 이상 소비자와 데이터를 공유하지 않으려면 네임스페이스에서 datashare에 대한 액세스를 취소합니다.

```
REVOKE USAGE ON DATASHARE salesshare FROM NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
```

더 이상 소비자와 데이터를 공유하지 않으려면 AWS 계정에서 데이터 공유에 대한 액세스를 취소합니다.

```
REVOKE USAGE ON DATASHARE salesshare FROM ACCOUNT '123456789012';
```

------

# Amazon Redshift의 데이터 공유에서 권한 부여 제거
<a name="writes-removing-authorization"></a>

Amazon Redshift를 사용하면 지정된 소비자에 대한 권한을 취소하여 데이터 공유에 대한 액세스를 제어할 수 있습니다. 이 섹션에서는 Amazon Redshift에서 데이터 공유에 대한 소비자 액세스 권한을 취소하기 위한 지침을 제공합니다.

**참고**  
데이터 공유에 대한 권한을 제거하려면 데이터 공유에 데이터 소비자가 하나 이상 추가되어 있어야 합니다.

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

승인을 제거하려는 하나 이상의 소비자 클러스터를 선택합니다. 그런 다음 **권한 제거**를 선택합니다.

권한이 제거되면 데이터 소비자는 datashare에 대한 액세스 권한을 즉시 상실합니다.

------
#### [ API ]

생산자 보안 관리자는 다음을 결정합니다.
+ 다른 계정이 데이터 공유에 액세스할 수 있는지 여부
+ 계정에 데이터 공유에 대한 액세스 권한이 있는 경우, 해당 계정에 쓰기 권한이 있는지 여부

데이터 공유 권한을 제거하려면 다음과 같은 IAM 권한이 필요합니다.

**redshift:DeauthorizeDataShare**

CLI 직접 호출 또는 API를 사용하여 사용 및 쓰기 권한을 제거할 수 있습니다.

```
deauthorize-data-share
--data-share-arn <value>
--consumer-identifier <value>
```

명령에 대한 자세한 내용은 [deauthorize-data-share](https://docs.aws.amazon.com/cli/latest/reference/redshift/deauthorize-data-share.html)를 참조하세요.

------

# Amazon Redshift의 데이터 공유에서 데이터 공유 객체 제거
<a name="writes-removing-datashare-object"></a>

다음 절차를 사용하여 datashare에서 객체를 하나 이상 제거할 수 있습니다.

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

콘솔을 사용하여 데이터 공유에서 하나 이상의 객체를 제거하려면 다음 단계를 따르세요.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. [**Datashare(Datashares)**]를 선택합니다.

1. [**내 계정에 생성된 datashare(Datashares created in my account)**] 섹션에서 [**데이터베이스에 연결(Connect to database)**]을 선택합니다. 자세한 내용은 [데이터베이스로 연결](connect-database-console.md) 섹션을 참조하세요.

1. 편집할 datashare를 선택한 다음 **편집(Edit)**을 선택합니다. datashare 세부 정보 페이지가 나타납니다.

1. datashare 객체를 하나 이상 제거하려면 다음 중 하나를 수행합니다.
   + datashare에서 스키마를 제거하려면 스키마를 하나 이상 선택합니다. 그런 다음 [**제거(Remove)**]를 선택합니다. Amazon Redshift는 datashare에서 지정된 스키마와 해당 스키마의 모든 객체를 제거합니다.
   + datashare에서 테이블과 뷰를 제거하려면 테이블과 뷰를 하나 이상 선택합니다. 그런 다음 [**제거(Remove)**]를 선택합니다. 또는 [**스키마별 제거(Remove by schema)**]를 선택하여 지정된 스키마의 모든 테이블과 뷰를 제거합니다.
   + datashare에서 사용자 정의 함수를 제거하려면 사용자 정의 함수를 하나 이상 선택합니다. 그런 다음 [**제거(Remove)**]를 선택합니다. 또는 [**스키마별 제거(Remove by schema)**]를 선택하여 지정된 스키마의 모든 사용자 정의 함수를 제거합니다.

------
#### [ SQL ]

ALTER DATASHARE를 사용하여 datashare에서 언제든지 객체를 제거합니다. 스키마를 제거하려면 다음 명령을 사용합니다.

```
ALTER DATASHARE salesshare REMOVE SCHEMA PUBLIC;
```

테이블을 제거하려면 다음 명령을 사용합니다.

```
ALTER DATASHARE salesshare REMOVE TABLE public.tickit_sales_redshift;
```

------

# Amazon Redshift의 데이터 공유에서 데이터 소비자 제거
<a name="writes-removing-data-consumer"></a>

datashare에서 데이터 소비자를 하나 이상 제거할 수 있습니다. 데이터 소비자는 Amazon Redshift 클러스터 또는 AWS 계정을 고유하게 식별한 네임스페이스일 수 있습니다.

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

콘솔을 사용하여 데이터 공유에서 하나 이상의 데이터 소비자를 제거하려면 네임스페이스 ID 또는 AWS 계정에서 하나 이상의 데이터 소비자를 선택합니다. 그런 다음 **제거**를 선택합니다.

Amazon Redshift는 datashare에서 지정된 데이터 소비자를 제거합니다. 제거된 소비자는 datashare에 대한 액세스 권한을 즉시 상실합니다.

------
#### [ SQL ]

REVOKE USAGE ON을 사용하여 특정 소비자에 대한 datashare 권한을 취소합니다. datashare 내의 객체에 대한 USAGE 권한을 취소하고 모든 소비자 클러스터에 대한 액세스를 즉시 중지합니다. 데이터베이스 및 테이블 나열 등의 datashare 나열과 메타데이터 쿼리는 액세스가 취소된 후 공유 객체를 반환하지 않습니다. 더 이상 소비자와 데이터를 공유하지 않으려면 네임스페이스에서 datashare에 대한 액세스를 취소합니다.

```
REVOKE USAGE ON DATASHARE salesshare FROM NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
```

------

# Amazon Redshift에서 계정에서 만들어진 데이터 공유 삭제
<a name="writes-deleting"></a>

콘솔 또는 SQL을 사용하여 자신의 계정에서 만들어진 데이터 공유를 삭제할 수 있습니다.

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

콘솔을 사용하여 계정에서 만들어진 데이터 공유를 삭제하려면 먼저 데이터베이스에 연결하여 계정에서 만들어진 데이터 공유 목록을 확인합니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **클러스터(Clusters)**를 선택한 다음 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 나타납니다.

1. [**Datashare(Datashares)**]를 선택합니다. datashare 목록이 나타납니다.

1. [**내 계정에 생성된 datashare(Datashares created in my account)**] 섹션에서 [**데이터베이스에 연결(Connect to database)**]을 선택합니다.

1. 삭제하려는 datashare를 하나 이상 선택하고 [**삭제(Delete)**]를 선택합니다. datashare 삭제 페이지가 나타납니다.

   Lake Formation과 공유된 데이터 공유를 삭제해도 Lake Formation에서 연결된 권한이 자동으로 제거되지 않습니다. 이를 제거하려면 Lake Formation 콘솔로 이동하세요.

1. [**삭제(Delete)**]를 입력하여 지정된 datashare 삭제를 확인합니다.

1. **삭제**를 선택합니다.

datashare가 삭제되면 데이터 소비자는 datashare에 대한 액세스 권한을 상실합니다.

------
#### [ SQL ]

[DROP DATASHARE](r_DROP_DATASHARE.md)를 사용하여 언제든지 SQL을 사용해 데이터 공유 객체를 삭제할 수 있습니다. 클러스터 슈퍼 사용자와 datashare 소유자는 datashare를 삭제할 수 있습니다.

다음 예에서는 `salesshare`라는 datashare를 삭제합니다.

```
DROP DATASHARE salesshare;
```

------

# Amazon Redshift에서 기존 데이터 공유에 대한 소비자 작업
<a name="writes-consumer-existing"></a>

Amazon Redshift를 사용하면 기존 데이터 공유를 관리하여 Amazon Redshift 클러스터의 데이터에 대한 액세스를 제어할 수 있습니다. 다음 섹션에서는 Amazon Redshift 환경에서 소비자 관리자로서 데이터 공유를 관리하는 방법에 대한 단계별 가이드를 제공합니다.

**Topics**
+ [Amazon Redshift에서 데이터 공유에 대한 권한 관리](writes-managing-permissions.md)
+ [Amazon Redshift의 다른 AWS 계정에 있는 데이터 소비자에게서 데이터 공유 연결 제거](writes-disassociating-datashare.md)
+ [Amazon Redshift에서 다른 AWS 계정의 데이터 공유 거부](writes-declining-datashare.md)

# Amazon Redshift에서 데이터 공유에 대한 권한 관리
<a name="writes-managing-permissions"></a>

생산자 관리자는 공유 중인 데이터세트에 대한 제어 권한을 보유합니다. 따라서 datashare에서 새 객체를 추가하거나 제거할 수 있습니다. 소비자 클러스터 및 AWS 계정 또는 AWS 리전에 대해 전체적으로 datashare에 대한 액세스 권한을 부여하거나 취소할 수도 있습니다. 권한이 취소되면 소비자 클러스터는 즉시 공유 객체에 대한 액세스 권한을 상실하고 SVV\$1DATASHARES의 INBOUND datashare 목록에서 해당 객체를 볼 수 없습니다.

다음 예제에서는 `salesshare` 데이터 공유를 만들고, `public` 스키마를 추가하고, `public.tickit_sales_redshift` 테이블을 `salesshare`에 추가합니다. 또한 특정 네임스페이스에 `salesshare`에 대한 사용 권한을 부여합니다.

```
CREATE DATASHARE salesshare;
            
ALTER DATASHARE salesshare ADD SCHEMA public;

ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift; 

GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
```

CREATE DATASHARE의 경우 슈퍼 사용자와 데이터베이스 소유자는 datashare를 생성할 수 있습니다. 자세한 내용은 [CREATE DATASHARE](r_CREATE_DATASHARE.md) 섹션을 참조하세요. ALTER DATASHARE의 경우 추가하거나 제거할 datashare 객체에 대한 필수 권한이 있는 datashare 소유자는 datashare를 변경할 수 있습니다. 자세한 내용은 [ALTER DATASHARE](r_ALTER_DATASHARE.md) 섹션을 참조하세요.

생산자 관리자가 삭제한 datashare는 소비자 클러스터에 더 이상 나열되지 않습니다. 삭제된 datashare에서 소비자 클러스터에 생성된 데이터베이스 및 스키마 참조는 객체 없이 계속 존재합니다. 소비자 관리자는 수동으로 이러한 데이터베이스를 삭제해야 합니다.

소비자 측에서 소비자 관리자는 데이터 공유에서 데이터베이스를 만들어 공유 데이터에 액세스해야 하는 사용자와 역할을 결정할 수 있습니다. 데이터베이스를 생성할 때 선택한 옵션에 따라 다음과 같이 데이터베이스 액세스를 제어할 수 있습니다. 데이터 공유에서 데이터베이스 생성에 대한 자세한 내용은 [데이터베이스 생성](r_CREATE_DATABASE.md) 섹션을 참조하세요.

데이터 공유 설정 및 소비자의 데이터 읽기에 대한 자세한 내용은 [AWS 계정 내 데이터에 대한 읽기 액세스 공유](https://docs.aws.amazon.com/redshift/latest/dg/within-account.html)를 참조하세요.

**WITH PERMISSIONS 절을 사용하지 않고 데이터베이스 생성**  
관리자는 데이터베이스 또는 스키마 수준에서 액세스를 제어할 수 있습니다. 스키마 수준에서 액세스를 제어하려면 관리자는 데이터 공유에서 생성된 Amazon Redshift 데이터베이스에서 외부 스키마를 생성해야 합니다.

다음 예에서는 데이터베이스 수준 및 스키마 수준에서 공유 테이블에 액세스할 수 있는 권한을 부여합니다.

```
GRANT USAGE ON DATABASE sales_db TO Bob;

CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE sales_db SCHEMA 'public';

GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
```

액세스를 추가로 제한하려면 공유 객체 위에 뷰를 생성하여 필요한 데이터만 표시할 수 있습니다. 그런 다음 이러한 뷰를 사용하여 사용자와 역할에 대한 액세스 권한을 부여할 수 있습니다.

사용자에게 데이터베이스 또는 스키마에 대한 액세스 권한이 부여된 후 해당 데이터베이스 또는 스키마의 모든 공유 객체에 액세스할 수 있습니다.

**WITH PERMISSIONS 절을 사용하여 데이터베이스 생성**  
데이터베이스 또는 스키마에 대한 사용 권한을 부여한 후 관리자는 로컬 데이터베이스 또는 스키마에서와 동일한 권한 부여 프로세스를 사용하여 액세스를 추가로 제어할 수 있습니다. 개별 객체 권한이 없으면 사용자는 USAGE 권한을 부여받은 후에도 데이터 공유 데이터베이스 또는 스키마의 객체에 액세스할 수 없습니다.

다음 예에서는 데이터베이스 수준에서 공유 테이블에 액세스할 수 있는 권한을 부여합니다.

```
GRANT USAGE ON DATABASE sales_db TO Bob;
GRANT USAGE FOR SCHEMAS IN DATABASE sales_db TO Bob;
GRANT SELECT ON sales_db.public.tickit_sales_redshift TO Bob;
```

데이터베이스 또는 스키마에 대한 액세스 권한을 부여받은 후에도 사용자는 액세스하려는 데이터베이스 또는 스키마의 모든 객체에 대한 관련 권한을 부여받아야 합니다.

## WITH PERMISSIONS를 사용한 세분화된 공유
<a name="share-datashare-writes"></a>

WITH PERMISSIONS을 사용하여 세분화된 공유를 사용해 클러스터 또는 Serverless 작업 그룹이 데이터 공유를 쿼리하도록 할 수 있습니다. 이 프로세스에서는 데이터 공유가 사용자 계정의 다른 클러스터 또는 Amazon Redshift Serverless 네임스페이스에서 시작되거나 다른 계정에서 가져왔고 사용 중인 네임스페이스와 연결되어 있다고 가정합니다.

1. 소비자 데이터베이스 관리자는 데이터 공유에서 데이터베이스를 생성할 수 있습니다.

   ```
   CREATE DATABASE my_ds_db [WITH PERMISSIONS] FROM DATASHARE my_datashare OF NAMESPACE 'abc123def';
   ```

   WITH PERMISSIONS을 사용하여 데이터베이스를 만드는 경우 데이터 공유 객체에 대한 세분화된 권한을 다양한 사용자 및 역할에 부여할 수 있습니다. 이렇게 하지 않으면 데이터 공유 데이터베이스에 대한 USAGE 권한이 부여된 모든 사용자 및 역할에 데이터 공유 데이터베이스 내의 모든 객체에 대한 모든 권한이 부여됩니다.

1. 다음은 Redshift 데이터베이스 사용자 또는 역할에 권한을 부여하는 방법을 보여줍니다. 이 문을 실행하려면 로컬 데이터베이스에 연결되어 있어야 합니다. 권한 부여 문을 실행하기 전에 데이터 공유 데이터베이스에서 USE 명령을 실행하면 이러한 문을 실행할 수 없습니다.

   ```
   GRANT USAGE ON DATABASE my_ds_db TO ROLE data_eng;
   GRANT CREATE, USAGE ON SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng;
   GRANT ALL ON ALL TABLES IN SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng;
    
   GRANT USAGE ON DATABASE my_ds_db TO bi_user;
   GRANT USAGE ON SCHEMA my_ds_db.my_shared_schema TO bi_user;
   GRANT SELECT ON my_ds_db.my_shared_schema.table1 TO bi_user;
   ```

# Amazon Redshift의 다른 AWS 계정에 있는 데이터 소비자에게서 데이터 공유 연결 제거
<a name="writes-disassociating-datashare"></a>

Amazon Redshift를 사용하면 다른 AWS 계정에서 공유하는 데이터 공유에서 연결을 제거할 수 있습니다. 데이터 공유는 하나 이상의 Redshift 데이터베이스에서 데이터를 캡슐화하는 공유 가능한 데이터베이스 객체입니다. 다음 섹션에서는 Redshift 환경 내에서 데이터 공유의 연결을 해제하는 프로세스를 보여줍니다.

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

콘솔에서 소비자 관리자는 데이터 소비자에게서 데이터 공유 연결을 제거할 수 있습니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **Datashares**를 선택합니다. datashare 목록 페이지가 나타납니다.

1. [**다른 계정에서(From other accounts)**]를 선택합니다.

1. [**다른 계정의 datashare(Datashares from other accounts)**] 섹션에서 데이터 소비자에게서 연결을 제거할 datashare를 선택합니다.

1. [**데이터 소비자(Data consumers)**] 섹션에서 연결을 제거할 데이터 소비자를 하나 이상 선택합니다. 그런 다음 [**연결 제거(Remove association)**]를 선택합니다.

1. 연결 제거 페이지가 나타나면 [**연결 제거(Remove association)**]를 선택합니다.

연결이 제거되면 데이터 소비자는 datashare에 대한 액세스 권한을 상실합니다. 언제든지 데이터 소비자 연결을 변경할 수 있습니다.

------
#### [ SQL ]

**참고**  
이 섹션의 단계는 생산자 관리자가 공유 데이터베이스 객체에 대한 특정 작업을 허용하고, 데이터 공유를 다른 계정과 공유하는 경우 생산자 보안 관리자가 액세스를 권한을 부여한 후에 수행됩니다.

소비자 보안 관리자는 데이터 공유를 다음 명령과 연결 해제할 수 있습니다.

```
disassociate-data-share-consumer
--data-share-arn <value>
```

명령에 대한 자세한 내용은 [disassociate-data-share-consumer](https://docs.aws.amazon.com/cli/latest/reference/redshift/disassociate-data-share-consumer.html)를 참조하세요.

------

# Amazon Redshift에서 다른 AWS 계정의 데이터 공유 거부
<a name="writes-declining-datashare"></a>

Amazon Redshift를 사용하면 다른 AWS 계정에서 공유한 데이터 공유를 거부할 수 있으므로 조직 경계 전반에서 원활하고 안전한 데이터 공유가 가능합니다. 데이터 공유는 하나 이상의 Amazon Redshift 데이터베이스에서 데이터를 캡슐화하는 공유 가능한 데이터베이스 객체입니다.

소비자 관리자는 사용 가능 또는 활성 상태인 데이터 공유를 거부할 수 있습니다. 데이터 공유를 거부하면 소비자 클러스터 사용자는 데이터 공유에 대한 액세스 권한을 상실합니다. Amazon Redshift는 `DescribeDataSharesForConsumer` API 작업을 호출하는 경우 거부된 데이터 공유를 반환하지 않습니다. 생산자 관리자가 `DescribeDataSharesForProducer` API 작업을 실행하면 데이터 공유가 거부된 것을 확인할 수 있습니다. 데이터 공유가 거부되면 생산자 관리자는 소비자 클러스터에 대한 데이터 공유를 다시 승인할 수 있으며, 소비자 관리자는 자신의 AWS 계정을 데이터 공유와 연결하거나 이를 거부하도록 선택할 수 있습니다.

AWS 계정이 데이터 공유와 연결되어 있고 Lake Formation에서 관리하는 데이터 공유에 대한 보류 중인 연결이 있는 경우. Lake Formation에서 관리하는 데이터 공유 연결을 거부하면 원래 데이터 공유도 거부됩니다. 특정 연결을 거부하려면 생산자 관리자가 지정된 데이터 공유에서 권한 부여를 제거할 수 있습니다. 이 작업은 다른 데이터 공유에 영향을 주지 않습니다.

데이터 공유를 거부하려면 AWS 콘솔, API 작업 `RejectDataShare` 또는 AWS CLI의 `reject-datashare`를 사용하세요.

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

AWS Console을 사용하여 데이터 공유를 거부하려면 다음 단계를 수행합니다.

1. AWS Management Console에 로그인한 후 [https://console.aws.amazon.com/redshiftv2/](https://console.aws.amazon.com/redshiftv2/)에서 Amazon Redshift 콘솔을 엽니다.

1. 탐색 메뉴에서 **데이터 공유**를 선택합니다.

1. [**다른 계정에서(From other accounts)**]를 선택합니다.

1. [**다른 계정의 datashare(Datashares from other accounts)**] 섹션에서 거부할 datashare를 선택합니다. **datashare 거부(Decline datashare)** 페이지가 나타나면 **거부(Decline)**를 선택합니다.

datashare를 거부한 후에는 변경 사항을 되돌릴 수 없습니다. Amazon Redshift가 목록에서 데이터 공유를 제거합니다. 데이터 공유를 다시 보려면 생산자 관리자가 데이터 공유를 다시 승인해야 합니다.

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

데이터 공유를 거부하려면 관리자가 다음 명령을 사용합니다.

```
reject-data-share
--data-share-arn <value>
```

명령에 대한 자세한 내용은 [reject-data-share](https://docs.aws.amazon.com/cli/latest/reference/redshift/reject-data-share.html)를 참조하세요.

------

# Amazon Redshift에서 AWS CloudFormation과 데이터 공유 시작하기
<a name="data-sharing-within-account-CF"></a>

AWS 리소스를 프로비저닝하는 ㅂAWS CloudFormation스택을 사용하여 데이터 공유 설정을 자동화할 수 있습니다. 다음에 설명하는 CloudFormation 스택은 동일한 AWS 계정에 있는 두 Amazon Redshift 클러스터 간의 데이터 공유를 설정합니다. 따라서 리소스 프로비저닝을 위해 SQL 문을 실행하지 않고도 데이터 공유를 시작할 수 있습니다.

스택은 사용자가 지정하는 클러스터에 datashare를 생성합니다. datashare에는 테이블과 샘플 읽기 전용 데이터가 포함됩니다. 이 데이터는 다른 Amazon Redshift 클러스터에서 읽을 수 있습니다.

CloudFormation을 사용하지 않고 SQL 문을 실행하여 datashare를 설정하고 권한을 부여하여 AWS 계정에서 데이터 공유를 시작하려는 경우 [AWS 계정 내 데이터에 대한 읽기 액세스 공유](within-account.md) 섹션을 참조하세요.

데이터 공유 CloudFormation 스택을 실행하기 전에 IAM 역할과 Lambda 함수를 생성할 권한이 있는 사용자로 로그인해야 합니다. 또한 동일한 계정에 2개의 Amazon Redshift 클러스터가 필요합니다. 하나는 샘플 데이터를 공유하는 데 사용하는 *생산자*이고, 다른 하나는 샘플 데이터를 읽는 데 사용하는 *소비자*입니다. 이러한 클러스터의 기본 요구 사항은 각각 RA3 노드를 사용한다는 것입니다. 추가적인 필수 사항은 [Amazon Redshift의 데이터 공유 고려 사항](datashare-considerations.md) 섹션을 참조하세요.

Amazon Redshift 클러스터 설정 시작하기에 대한 자세한 내용은 [Amazon Redshift 프로비저닝된 데이터 웨어하우스 시작하기](https://docs.aws.amazon.com/redshift/latest/gsg/new-user.html)를 참조하세요. CloudFormation으로 설정 자동화에 대한 자세한 내용은 [AWS CloudFormation이란 무엇인가요?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)를 참조하세요.

**중요**  
CloudFormation 스택을 시작하기 전에 동일한 계정에 두 개의 Amazon Redshift 클러스터가 있고 클러스터가 RA3 노드를 사용하는지 확인합니다. 각 클러스터에 데이터베이스와 슈퍼유저가 있는지 확인합니다. 자세한 내용은 [데이터베이스 생성](r_CREATE_DATABASE.md) 및 [슈퍼 사용자](r_superusers.md) 섹션을 참조하세요.

**Amazon Redshift 데이터 공유를 위한 CloudFormation 스택을 시작하려면**

1. [https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=DataShare&templateURL=https://s3.amazonaws.com/redshift-downloads/docs-downloads/DataShare.yml](https://console.aws.amazon.com/cloudformation/home?#/stacks/new?stackName=DataShare&templateURL=https://s3.amazonaws.com/redshift-downloads/docs-downloads/DataShare.yml)을 클릭하여 AWS Management Console에서 CloudFormation 서비스로 이동합니다.

   메시지가 나타나면 로그인합니다.

   Amazon S3에 저장된 CloudFormation 템플릿 파일을 참조하여 스택 생성 프로세스가 시작됩니다. CloudFormation *템플릿*은 스택을 구성하는 AWS 리소스를 선언하는 JSON 형식의 텍스트 파일입니다. CloudFormation 템플릿에 대한 자세한 내용은 [템플릿 기본 사항 알아보기](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html)를 참조하세요.

1. **다음(Next)**을 선택하여 스택 세부 정보를 입력합니다.

1. **파라미터(Parameters)**에서 각 클러스터에 대해 다음을 입력합니다.
   + Amazon Redshift 클러스터 이름(예: **ra3-consumer-cluster**)
   + 데이터베이스 이름(예: **dev**)
   + 데이터베이스 사용자의 이름(예: **consumeruser**)

   스택은 여러 데이터베이스 객체를 생성하므로 테스트 클러스터를 사용하는 것이 좋습니다.

   **다음**을 선택합니다.

1. 스택 옵션이 나타납니다.

   **다음(Next)**을 선택하여 기본 설정을 적용합니다.

1. **기능**에서 **AWS CloudFormation에서 IAM 리소스를 생성할 수 있음을 승인합니다**를 선택합니다.

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

CloudFormation에서 템플릿을 사용하여 Amazon Redshift 스택을 구축하고 `myproducer_share`라는 datashare를 생성하는 데 10분 정도 걸립니다. 스택은 스택 세부 정보에 지정된 데이터베이스에 datashare를 생성합니다. 해당 데이터베이스의 객체만 공유할 수 있습니다.

스택이 생성되는 동안 오류가 발생하면 다음을 수행합니다.
+ 각 Redshift 클러스터에 대해 올바른 클러스터 이름, 데이터베이스 이름 및 데이터베이스 사용자 이름을 입력했는지 확인합니다.
+ 클러스터에 RA3 노드가 있는지 확인합니다.
+ IAM 역할 및 Lambda 함수를 만들 수 있는 권한이 있는 사용자로 로그인했는지 확인하세요. IAM 역할 생성에 대한 자세한 내용은 [IAM 역할 생성](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create.html)을 참조하세요. Λ 함수 생성 정책에 대한 자세한 내용은 [함수 개발](https://docs.aws.amazon.com/lambda/latest/dg/access-control-identity-based.html#permissions-user-function)을 참조하세요.

## 생성한 datashare 쿼리
<a name="data-sharing-within-account-CF-querying"></a>

다음 절차를 사용하려면 설명된 각 클러스터에서 쿼리를 실행하는 데 필요한 권한이 있는지 확인해야 합니다.

**datashare를 쿼리하려면**

1. Amazon Redshift 쿼리 에디터 v2와 같은 클라이언트 도구를 사용하여 CloudFormation 스택이 생성될 때 입력한 데이터베이스의 생산자 클러스터에 연결합니다.

1. datashare를 쿼리합니다.

   ```
   SHOW DATASHARES;
                     
   +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+
   |    share_name    | share_owner | source_database | consumer_database | share_type | createdate | is_publicaccessible | share_acl | producer_account |          producer_namespace          |
   +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+
   | myproducer_share | 100         | sample_data_dev | myconsumer_db     | INBOUND    | NULL       | true                | NULL      |  producer-acct   |        your-producer-namespace       |
   +------------------+-------------+-----------------+-------------------+------------+------------+---------------------+-----------+------------------+--------------------------------------+
   ```

   앞의 명령은 스택에 의해 생성된 datashare의 이름인 `myproducer_share`를 반환합니다. 또한 datashare와 연결된 데이터베이스의 이름인 `myconsumer_db`를 반환합니다.

   이후 단계에서 사용할 생산자 네임스페이스 식별자를 복사합니다.

1. datashare의 객체를 설명합니다.

   ```
   DESC DATASHARE myproducer_share;
                     
   +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+
   | producer_account |          producer_namespace          | share_type |    share_name    | object_type |             object_name             | include_new |
   +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+
   |   producer-acct  |        your-producer-namespace       | OUTBOUND   | myproducer_share | schema      | myproducer_schema                   | true        |
   |   producer-acct  |        your-producer-namespace       | OUTBOUND   | myproducer_share | table       | myproducer_schema.tickit_sales      | NULL        |
   |   producer-acct  |        your-producer-namespace       | OUTBOUND   | myproducer_share | view        | myproducer_schema.ticket_sales_view | NULL        |
   +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+
   ```

   datashare를 설명하면 테이블 및 보기에 대한 속성이 반환됩니다. 스택은 샘플 데이터가 있는 테이블과 보기를 생산자 데이터베이스에 추가합니다(예: `tickit_sales` 및 `tickit_sales_view`). TICKIT 샘플 데이터베이스에 대한 자세한 내용은 [샘플 데이터베이스](c_sampledb.md)를 참조하세요.

   쿼리를 실행하기 위해 datashare에 대한 권한을 위임할 필요가 없습니다. 스택은 필요한 권한을 부여합니다.

1. 클라이언트 도구를 사용하여 소비자 클러스터에 연결합니다. 생산자의 네임스페이스를 지정하여 datashare를 설명합니다.

   ```
   DESC DATASHARE myproducer_share OF NAMESPACE '<namespace id>'; --specify the unique identifier for the producer namespace
                     
   +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+
   | producer_account |          producer_namespace          | share_type |    share_name    | object_type |             object_name             | include_new |
   +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+
   |   producer-acct  |        your-producer-namespace       | INBOUND    | myproducer_share | schema      | myproducer_schema                   | NULL        |
   |   producer-acct  |        your-producer-namespace       | INBOUND    | myproducer_share | table       | myproducer_schema.tickit_sales      | NULL        |
   |   producer-acct  |        your-producer-namespace       | INBOUND    | myproducer_share | view        | myproducer_schema.ticket_sales_view | NULL        |
   +------------------+--------------------------------------+------------+------------------+-------------+-------------------------------------+-------------+
   ```

1. datashare의 데이터베이스와 스키마를 지정하여 datashare의 테이블을 쿼리할 수 있습니다. 자세한 내용은 [데이터베이스 간 쿼리 예제](cross-database_example.md) 섹션을 참조하세요. 다음 쿼리는 TICKIT 샘플 데이터베이스의 SALES 테이블에서 판매 및 판매자 데이터를 반환합니다. 자세한 내용은 [샘플 데이터베이스](c_sampledb.md) 섹션을 참조하세요.

   ```
   SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales_view;
                     
   +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
   | salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission |      saletime       |
   +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
   |       1 |      1 |    36861 |   21191 |    7872 |   1875 |       4 |       728 |      109.2 | 2008-02-18 02:36:48 |
   |       2 |      4 |     8117 |   11498 |    4337 |   1983 |       2 |        76 |       11.4 | 2008-06-06 05:00:16 |
   |       3 |      5 |     1616 |   17433 |    8647 |   1983 |       2 |       350 |       52.5 | 2008-06-06 08:26:17 |
   |       4 |      5 |     1616 |   19715 |    8647 |   1986 |       1 |       175 |      26.25 | 2008-06-09 08:38:52 |
   |       5 |      6 |    47402 |   14115 |    8240 |   2069 |       2 |       154 |       23.1 | 2008-08-31 09:17:02 |
   +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
   ```
**참고**  
쿼리는 공유 스키마의 보기에 대해 실행됩니다. datashare에서 생성된 데이터베이스에는 직접 연결할 수 없습니다. 읽기 전용입니다.

1. 집계를 포함하는 쿼리를 실행하려면 다음 예제를 사용합니다.

   ```
   SELECT * FROM myconsumer_db.myproducer_schema.tickit_sales ORDER BY 1,2 LIMIT 5;
                     
   +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
   | salesid | listid | sellerid | buyerid | eventid | dateid | qtysold | pricepaid | commission |      saletime       |
   +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
   |       1 |      1 |    36861 |   21191 |    7872 |   1875 |       4 |       728 |      109.2 | 2008-02-18 02:36:48 |
   |       2 |      4 |     8117 |   11498 |    4337 |   1983 |       2 |        76 |       11.4 | 2008-06-06 05:00:16 |
   |       3 |      5 |     1616 |   17433 |    8647 |   1983 |       2 |       350 |       52.5 | 2008-06-06 08:26:17 |
   |       4 |      5 |     1616 |   19715 |    8647 |   1986 |       1 |       175 |      26.25 | 2008-06-09 08:38:52 |
   |       5 |      6 |    47402 |   14115 |    8240 |   2069 |       2 |       154 |       23.1 | 2008-08-31 09:17:02 |
   +---------+--------+----------+---------+---------+--------+---------+-----------+------------+---------------------+
   ```

   쿼리는 샘플 TICKIT 데이터에서 매출 및 판매자 데이터를 반환합니다.

   datashare 쿼리의 추가 예는 [AWS 계정 내 데이터에 대한 읽기 액세스 공유](within-account.md) 섹션을 참조하세요.

# Amazon Redshift의 데이터 공유 유형
<a name="datashare-types"></a>

*datashare*는 Amazon Redshift에서 데이터를 공유하는 단위입니다. 데이터 공유를 사용해 동일한 AWS 계정 또는 다른 AWS 계정에서 데이터를 공유합니다. 또한 여러 Amazon Redshift 클러스터에서 읽기용으로 데이터를 공유합니다.

각 datashare는 Amazon Redshift 클러스터의 특정 데이터베이스와 연결됩니다.

생산자 관리자는 데이터 공유를 만들고 데이터 공유 객체를 추가하여 다른 클러스터와 데이터를 공유할 수 있으며, 이를 *아웃바운드* 공유라고 합니다. 소비자 관리자는 *인바운드* 공유라고 하는 다른 클러스터로부터 데이터 공유를 받을 수 있습니다. 생산자와 소비자에 대한 자세한 내용은 [데이터 공유 생산자와 소비자](adx_datashare_overview.md#datashare_producer_consumer)를 참조하세요.

데이터 공유 객체는 생산자 관리자가 데이터 소비자와 공유할 데이터 공유에 추가할 수 있는 클러스터에 있는 특정 데이터베이스의 객체입니다. datashare 객체는 데이터 소비자에게 읽기 전용입니다. datashare 객체의 예로 테이블, 뷰 및 사용자 정의 함수가 있습니다. datashare를 생성하거나 편집하는 동안 언제든지 datashare에 datashare 객체를 추가할 수 있습니다.

클러스터의 크기를 조정하거나 생산자 클러스터가 일시 중지된 경우에도 데이터 공유는 계속 작동합니다.

데이터 공유에는 표준 데이터 공유, AWS Data Exchange 데이터 공유, AWS Lake Formation 관리형 데이터 공유 등 다양한 유형이 있습니다. 다음 페이지에서는 이러한 각 유형에 대한 개요를 제공합니다.

# 표준 데이터공유
<a name="standard_datashare"></a>

표준 데이터 공유를 사용하면 프로비저닝된 클러스터, 서버리스 작업 그룹, 가용 영역, AWS 계정 및 AWS 리전 간에 데이터를 공유할 수 있습니다. 클러스터 형식 간은 물론 프로비저닝된 클러스터와 Amazon Redshift 서버리스 간에도 공유할 수 있습니다.

데이터를 공유하려면 다음과 같은 프로비저닝된 클러스터, 서버리스 네임스페이스 및 AWS 계정 계정 식별자에 유의하세요
+ 프로비저닝된 네임스페이스는 Amazon Redshift 프로비저닝된 클러스터를 식별하는 식별자입니다. 프로비저닝된 클러스터 생성 중 네임스페이스 전역 고유 식별자(GUID)가 자동으로 생성되어 클러스터에 연결됩니다. 네임스페이스 Amazon 리소스 이름(ARN)은 arn: \$1partition\$1:redshift: \$1region\$1:\$1account-id\$1: namespace:\$1namespace-guid\$1 형식으로 되어 있습니다. Amazon Redshift 콘솔의 클러스터 세부 정보 페이지에서 프로비저닝된 클러스터의 네임스페이스를 볼 수 있습니다.

  데이터 공유 워크플로에서 네임스페이스 GUID 값과 네임스페이스 ARN은 AWS 계정의 클러스터와 데이터를 공유하는 데 사용됩니다. `current_namespace` 함수를 사용하여 현재 클러스터의 네임스페이스를 찾을 수도 있습니다.
+ 서버리스 네임스페이스는 Amazon Redshift Serverless를 식별하는 식별자입니다. Amazon Redshift Serverless 생성 중 네임스페이스 전역 고유 식별자(GUID)가 자동으로 생성되어 인스턴스에 연결됩니다. 서버리스 네임스페이스 ARN은 arn:\$1partition\$1:redshift-serverless:\$1region\$1:\$1account-id\$1:namespace/\$1namespace-guid\$1 형식으로 되어 있습니다.
+ AWS 계정은 데이터 공유의 소비자가 될 수 있으며, 각각 12자리 AWS 계정 ID로 표시됩니다.

**표준 데이터 공유의 경우 다음을 고려하세요.
+ 생산자 클러스터가 삭제될 때 Amazon Redshift는 생산자 클러스터에서 생성한 datashare를 삭제합니다. 생산자 클러스터가 백업 및 복원될 때 생성된 datashare는 복원된 클러스터에서 계속 유지됩니다. 동일한 서버리스 네임스페이스에서 복원을 수행하는 경우 데이터 공유 권한이 보존될 수 있습니다. 지원되는 시나리오는 [Amazon Redshift Serverless 복원 시 데이터 공유에 대한 고려 사항](considerations-datashare-serverless-restore.md) 섹션을 참조하세요. 다른 시나리오의 경우, 소비자 클러스터에 부여된 데이터 공유 권한은 복원된 클러스터에서 더 이상 유효하지 않습니다. 원하는 소비자 클러스터에 datashare 사용 권한을 다시 부여합니다. 소비자 클러스터의 소비자 데이터베이스는 스냅샷이 생성된 원래 클러스터의 datashare를 가리킵니다. 복원된 클러스터에서 공유 데이터를 쿼리하기 위해 소비자 관리자는 다른 데이터베이스를 만듭니다. 또는 관리자가 새로 복원된 클러스터의 datashare를 사용하기 위해 기존 소비자 데이터베이스를 삭제하고 다시 생성할 수 있습니다.
+ 소비자 클러스터가 삭제되고 스냅샷에서 복원되면 이 클러스터에 공유된 이전 액세스가 더 이상 유효하지 않고 표시되지 않습니다. 복원된 소비자 클러스터에서 데이터 공유에 대한 액세스가 여전히 필요한 경우 생산자 관리자는 복원된 소비자 클러스터에 데이터 공유 사용 권한을 다시 부여해야 합니다. 소비자 관리자는 비활성 데이터 공유에서 만들어졌으며 오래되어 쓸모없어진 소비자 데이터베이스를 삭제해야 합니다. 그런 다음 생산자가 권한을 다시 부여한 후 관리자는 datashare에서 소비자 데이터베이스를 다시 생성해야 합니다. 네임스페이스 GUID는 복원된 클러스터에서 원래 클러스터와 다르기 때문에 소비자 또는 생산자 클러스터가 백업에서 복원될 때 데이터 공유 권한을 다시 부여합니다.

# AWS Data Exchange 데이터 공유
<a name="adx_datashare_overview"></a>

AWS Data Exchange 데이터 공유를 사용하여 Amazon Redshift 데이터 공유에 대한 결제를 관리할 수 있습니다.

AWS Data Exchange 데이터 공유는 AWS Data Exchange를 통해 데이터를 공유하기 위한 라이선스 단위입니다. AWS는 AWS Data Exchange 구독 및 Amazon Redshift 데이터 공유 사용과 관련된 모든 청구 및 결제를 관리합니다. 승인된 데이터 제공자는 AWS Data Exchange 제품에 AWS Data Exchange datashare를 추가할 수 있습니다. 고객이 AWS Data Exchange datashare가 있는 제품을 구독하면 제품의 datashare에 액세스할 수 있습니다.

*Amazon Redshift용 AWS Data Exchange*를 사용하면 AWS Data Exchange를 통해 Amazon Redshift 데이터에 대한 액세스에 편리하게 라이선스를 부여할 수 있습니다. 고객이 AWS Data Exchange datashare가 있는 제품에 가입하면 AWS Data Exchange는 해당 제품에 포함된 모든 AWS Data Exchange datashare에 고객을 데이터 소비자로 자동 추가합니다. 인보이스가 자동으로 생성되고 지불이 중앙에서 수집되고 AWS Marketplace Entitlement Service을 통해 자동으로 지출됩니다.

공급자는 스키마, 테이블, 보기 및 사용자 정의 함수와 같은 세분화된 수준에서 Amazon Redshift의 데이터에 라이선스를 부여할 수 있습니다. 여러 AWS Data Exchange 제품에서 동일한 AWS Data Exchange datashare를 사용할 수 있습니다. AWS Data Exchange datashare에 추가된 모든 객체는 소비자가 사용할 수 있습니다. 생산자는 Amazon Redshift API 작업, SQL 명령 및 Amazon Redshift 콘솔을 통해 생산자를 대신하여 AWS Data Exchange에서 관리하는 모든 AWS Data Exchange datashare를 볼 수 있습니다. 제품 AWS Data Exchange datashare를 구독하는 고객은 datashare의 객체에 대한 읽기 전용 액세스 권한을 가집니다.

서드 파티 생산자 데이터를 사용하려는 고객은 AWS Data Exchange 카탈로그를 검색하여 Amazon Redshift에서 데이터 집합을 검색하고 구독할 수 있습니다. AWS Data Exchange 구독이 활성화되면 클러스터의 datashare에서 데이터베이스를 생성하고 Amazon Redshift에서 데이터를 쿼리할 수 있습니다.

## AWS Data Exchange datashare 작동 방식
<a name="adx-how-it-works"></a>

### 생산자 관리자로 AWS Data Exchange datashare 관리
<a name="provider-how-it-works"></a>

 데이터 생산자(AWS Data Exchange에서는 공급자라고도 함)는 Amazon Redshift 데이터베이스에 연결하는 AWS Data Exchange datashare를 생성할 수 있습니다. AWS Data Exchange의 제품에 AWS Data Exchange datashare를 추가하려면 등록된 AWS Data Exchange 공급자여야 합니다.

AWS Data Exchange datashare를 시작하는 방법에 대한 자세한 내용은 [AWS Data Exchange에서 라이선스가 부여된 Amazon Redshift 데이터 공유](adx-getting-started.md) 섹션을 참조하세요.

### 활성 AWS Data Exchange 구독이 있는 소비자로 AWS Data Exchange datashare 사용
<a name="subscriber-how-it-works"></a>

활성 AWS Data Exchange 구독(AWS Data Exchange에서는 구독자라고도 함)이 있는 소비자는 AWS Data Exchange 콘솔에서 AWS Data Exchange 카탈로그를 찾아보고 AWS Data Exchange datashare가 포함된 제품을 검색할 수 있습니다.

AWS Data Exchange datashare가 포함된 제품을 구독한 후 클러스터 내의 datashare에서 데이터베이스를 생성합니다. 그런 다음 데이터를 추출, 변환 및 로드하지 않고 Amazon Redshift에서 직접 데이터를 쿼리할 수 있습니다.

AWS Data Exchange datashare를 시작하는 방법에 대한 자세한 내용은 [AWS Data Exchange에서 라이선스가 부여된 Amazon Redshift 데이터 공유](adx-getting-started.md) 섹션을 참조하세요.

**AWS Data Exchange 데이터 교환 데이터 공유의 경우 다음을 고려하세요.
+ 생산자 클러스터가 삭제될 때 Amazon Redshift는 생산자 클러스터에서 생성한 datashare를 삭제합니다. 생산자 클러스터가 백업 및 복원될 때 생성된 datashare는 복원된 클러스터에서 계속 유지됩니다. 데이터 구독자가 계속해서 데이터에 액세스할 수 있도록 하려면 AWS Data Exchange datashare를 다시 생성하고 제품의 데이터 집합에 게시합니다. 소비자 클러스터의 소비자 데이터베이스는 스냅샷이 생성된 원래 클러스터의 datashare를 가리킵니다. 복원된 클러스터에서 공유 데이터를 쿼리하기 위해 소비자 관리자는 다른 데이터베이스를 만들거나 기존 소비자 데이터베이스를 삭제하고 다시 만들어 새로 복원된 클러스터에서 새로 만들어진 AWS Data Exchange 데이터 공유를 사용합니다.
+ AWS Data Exchange datashare가 있는 경우 클러스터를 삭제하지 않는 것이 좋습니다. 이러한 유형의 변경을 수행하면 AWS Data Exchange의 데이터 제품 조건을 위반할 수 있습니다.

## 데이터 공유 생산자와 소비자
<a name="datashare_producer_consumer"></a>

*데이터 생산자*(데이터 공유 생산자 또는 데이터 공유 생산자라고도 함)는 공유하려는 데이터가 있는 클러스터입니다. 생산자 관리자와 데이터베이스 소유자는 CREATE DATASHARE 명령을 사용하여 데이터 공유를 만들 수 있습니다. 생산자 클러스터가 소비자 클러스터와 공유할 데이터베이스에서 스키마, 테이블, 보기 및 SQL 사용자 정의 함수(UDF)와 같은 객체를 추가할 수 있습니다.

AWS Data Exchange datashare에 대한 데이터 생산자(AWS Data Exchange에서는 공급자라고도 함)는 AWS Data Exchange를 통해 데이터에 라이선스를 부여할 수 있습니다. 승인된 제공자는 AWS Data Exchange 제품에 AWS Data Exchange datashare를 추가할 수 있습니다.

고객이 AWS Data Exchange datashare가 있는 제품을 구독하면 AWS Data Exchange는 제품에 포함된 모든 AWS Data Exchange datashare에 고객을 데이터 소비자로 자동 추가합니다. AWS Data Exchange는 또한 구독이 종료되면 AWS Data Exchange datashare에서 모든 고객을 제거합니다. AWS Data Exchange는 또한 AWS Data Exchange datashare를 통해 유료 제품에 대한 청구, 인보이스 발행, 결제 수집 및 결제 배포를 자동으로 관리합니다. 자세한 내용은 [AWS Data Exchange 데이터 공유](#adx_datashare_overview) 섹션을 참조하세요. AWS Data Exchange 데이터 공급자로 등록하려면 [공급자로 시작하기](https://docs.aws.amazon.com/data-exchange/latest/userguide/provider-getting-started.html)를 참조하세요.

*데이터 소비자*(datashare 소비자라고도 함)는 생산자 클러스터에서 datashare를 수신하는 클러스터입니다.

데이터를 공유하는 Amazon Redshift 클러스터는 동일하거나 다른 AWS 계정 또는 다른 AWS 리전에 있을 수 있으므로 조직 간에 데이터를 공유하고 다른 당사자와 협업할 수 있습니다. 소비자 관리자는 사용 권한을 부여받은 데이터 공유를 받고 각 데이터 공유의 내용을 검토합니다. 공유 데이터를 사용하기 위해 소비자 관리자는 데이터 공유에서 Amazon Redshift 데이터베이스를 만듭니다. 그런 다음 관리자는 데이터베이스에 대한 권한을 소비자 클러스터의 사용자 및 역할에 할당합니다. 권한이 부여되면 사용자 및 역할은 소비자 클러스터의 로컬 데이터와 함께 표준 메타데이터 쿼리의 일부로 공유 객체를 나열할 수 있습니다. 또한 즉시 쿼리를 시작할 수 있습니다.

*활성 AWS Data Exchange 구독이 있는 소비자*(AWS Data Exchange에서는 구독자라고도 함)인 경우 Amazon Redshift에서 데이터를 추출, 변환 및 로드할 필요 없이 세분화된 최신 데이터를 찾고 구독하고 쿼리할 수 있습니다. 자세한 내용은 [AWS Data Exchange 데이터 공유](#adx_datashare_overview) 섹션을 참조하세요.

# AWS Lake Formation-관리형 데이터 공유
<a name="lf_datashare_overview"></a>

Amazon Redshift를 사용하면 AWS Lake Formation 관리형 데이터 공유를 통해 AWS 계정 및 Amazon Redshift 클러스터 전반에서 실시간 데이터에 액세스하고 공유할 수 있습니다. AWS Lake Formation 데이터 공유에서는 데이터 공급자가 다른 AWS 계정 및 Amazon Redshift 클러스터를 포함한 모든 소비자와 Amazon S3 데이터 레이크의 실시간 데이터를 안전하게 공유하도록 지원합니다.

 AWS Lake Formation을 사용하면 Amazon Redshift 데이터 공유의 데이터베이스, 테이블, 열 및 행 수준 액세스 권한을 중앙에서 정의 및 적용하고 데이터 공유 내의 객체에 대한 사용자 액세스를 제한할 수 있습니다. Lake Formation을 통해 데이터를 공유하면 Lake Formation에서 권한을 정의하고 해당 권한을 모든 데이터 공유 및 해당 객체에 적용할 수 있습니다. 예를 들어 직원 정보가 포함된 테이블이 있는 경우 Lake Formation의 열 수준 필터를 사용하여 HR 부서에서 일하지 않는 직원이 주민등록번호와 같은 개인 식별 정보(PII)를 보지 못하도록 할 수 있습니다. 데이터 필터에 대한 자세한 내용은 **AWS Lake Formation 개발자 안내서의 [Lake Formation에서 데이터 필터링 및 셀 수준 보안](https://docs.aws.amazon.com/lake-formation/latest/dg/data-filtering.html)을 참조하세요.

Lake Formation의 태그를 사용하여 Lake Formation 리소스에 대한 권한을 구성할 수도 있습니다. 자세한 내용은 [Lake Formation 태그 기반 액세스 제어](https://docs.aws.amazon.com/lake-formation/latest/dg/tag-based-access-control.html)를 참조하세요.

 Amazon Redshift는 현재 동일한 계정 내에서 또는 계정 간에 공유할 때 Lake Formation을 통한 데이터 공유를 지원합니다. 현재 교차 리전 공유는 지원되지 않습니다.

다음은 Lake Formation을 사용하여 데이터 공유 권한을 제어하는 방법에 대한 높은 수준의 개요입니다.

1. Amazon Redshift에서 생산자 클러스터 또는 작업 그룹 관리자는 생산자 클러스터 또는 작업 그룹에 데이터 공유를 생성하고 Lake Formation 계정에 사용 권한을 부여합니다.

1. 생산자 클러스터 또는 작업 그룹 관리자는 데이터 공유에 액세스할 수 있도록 Lake Formation 계정에 권한을 부여합니다.

1. Lake Formation 관리자는 데이터 공유를 검색하고 등록합니다. 또한 액세스 권한이 있는 AWS Glue ARN을 검색하고 데이터 공유를 AWS Glue Data Catalog ARN과 연결해야 합니다. AWS CLI를 사용하는 경우 Redshift CLI 작업 `describe-data-shares` 및 `associate-data-share-consumer`를 통해 데이터 공유를 검색 및 수락할 수 있습니다. 데이터 공유를 등록하려면 Lake Formation CLI 작업 `register-resource`를 사용하세요.

1. Lake Formation 관리자는 AWS Glue Data Catalog에 페더레이션 데이터베이스를 생성하고 데이터 공유 내의 객체에 대한 사용자 액세스를 제어하도록 Lake Formation 권한을 구성합니다. AWS Glue의 페더레이션 데이터베이스에 대한 자세한 내용은 [Amazon Redshift 데이터 공유의 데이터에 대한 권한 관리](https://docs.aws.amazon.com/lake-formation/latest/dg/data-sharing-redshift.html)를 참조하세요.

1. Lake Formation 관리자는 액세스 권한이 있는 AWS Glue 데이터베이스를 검색하고 데이터 공유를 AWS Glue Data Catalog ARN과 연결합니다.

1. Redshift 관리자는 액세스 권한이 있는 AWS Glue 데이터베이스 ARN을 검색하고, AWS Glue 데이터베이스 ARN을 사용하여 Amazon Redshift 소비자 클러스터에 외부 데이터베이스를 생성하며, [IAM 보안 인증 정보로 인증된 데이터베이스 사용자](https://docs.aws.amazon.com/redshift/latest/mgmt/options-for-providing-iam-credentials.html)에게 Amazon Redshift 데이터베이스 쿼리를 시작할 수 있는 사용 권한을 부여합니다.

1. 데이터베이스 사용자는 SVV\$1EXTERNAL\$1TABLES 및 SVV\$1EXTERNAL\$1COLUMNS 뷰를 사용하여 액세스 권한이 있는 AWS Glue 데이터베이스 내의 모든 테이블 또는 열을 찾은 다음 AWS Glue 데이터베이스의 테이블을 쿼리할 수 있습니다.

1. 생산자 클러스터 또는 작업 그룹 관리자가 더 이상 소비자 클러스터와 데이터를 공유하지 않기로 결정하면 생산자 관리자는 Redshift로부터 데이터 공유의 사용 권한을 취소하거나, 데이터 공유의 권한을 제거하거나, 데이터 공유를 삭제할 수 있습니다. Lake Formation의 연결된 권한 및 객체는 자동으로 삭제되지 않습니다.

생산자 클러스터 또는 작업 그룹 관리자로서 AWS Lake Formation과 데이터 공유를 공유하는 방법에 대한 자세한 내용은 [생산자로서 Lake Formation에서 관리하는 데이터 공유 사용](lake-formation-getting-started-producer.md) 섹션을 참조하세요. 생산자 클러스터 또는 작업 그룹의 공유 데이터를 사용하려면 [소비자로서 Lake Formation에서 관리하는 데이터 공유 사용](lake-formation-getting-started-consumer.md) 섹션을 참조하세요.

# Amazon Redshift의 데이터 공유 상태 값
<a name="datashare_status"></a>

Amazon Redshift를 사용하면 데이터를 복사하거나 전송할 필요 없이 Amazon Redshift 클러스터 전반에서 실시간 데이터를 안전하게 공유할 수 있습니다. Amazon Redshift용 데이터 공유로 소스 데이터에 대한 업데이트를 포함하여 실시간 쿼리 결과를 동일하거나 다른 AWS 계정 및 AWS 리전의 모든 Amazon Redshift 클러스터와 공유합니다. 이 주제에서는 데이터 공유를 통해 Amazon Redshift에서 나타날 수 있는 상태를 설명합니다.

계정 간 datashare의 경우 작업이 필요한 여러 가지 datashare 상태가 있습니다. 데이터 공유에는 활성, 작업 필요 또는 비활성 상태가 포함될 수 있습니다.

다음은 각 datashare 상태와 필요한 작업에 대한 설명입니다.
+ 생산자 관리자가 데이터 공유를 만들 때 생산자 클러스터의 데이터 공유 상태는 **권한 부여 보류 중**입니다. 생산자 관리자는 데이터 소비자가 데이터 공유에 액세스하도록 권한을 부여할 수 있습니다. 소비자 관리자의 작업은 없습니다.
+ 생산자 관리자가 데이터 공유 권한을 부여하면 생산자 클러스터에서 데이터 공유 상태가 **권한 부여됨**이 됩니다. 생산자 관리자의 작업은 없습니다. datashare에 대한 데이터 소비자와의 연결이 하나 이상 있는 경우 datashare 상태가 [**권한 부여됨(Authorized)**]에서 [**활성(Active)**]으로 바뀝니다.

  그러면 소비자 클러스터에서 datashare 상태가 [**사용 가능(Amazon Redshift 콘솔에서 작업 필요)**]이 됩니다. 소비자 관리자는 데이터 공유를 데이터 소비자와 연결하거나 데이터 공유를 거부할 수 있습니다. 소비자 관리자는 AWS CLI 명령 `describeDatashareforConsumer`를 사용하여 데이터 공유 상태를 볼 수도 있습니다. 또는 관리자는 CLI 명령 `describeDatashare`를 사용하고 datashare Amazon 리소스 이름(ARN)을 제공하여 datashare 상태를 볼 수 있습니다.
+ 소비자 관리자가 데이터 공유를 데이터 소비자와 연결하면 생산자 클러스터에서 데이터 공유 상태가 **활성**이 됩니다. datashare에 대한 데이터 소비자와의 연결이 하나 이상 있는 경우 datashare 상태가 [**권한 부여됨(Authorized)**]에서 [**활성(Active)**]으로 바뀝니다. 생산자 관리자가 해야 할 작업은 없습니다.

  소비자 클러스터에서 datashare 상태가 [**활성(Active)**]이 됩니다. 소비자 관리자가 해야 할 작업은 없습니다.
+ 소비자 관리자가 데이터 공유에서 소비자 연결을 제거하면 데이터 공유 상태가 **활성** 또는 **권한 부여됨**이 됩니다. 다른 데이터 소비자와의 datashare에 대해 연결이 하나 이상 있으면 [**활성(Active)**]이 됩니다. 생산자 클러스터의 datashare와의 소비자 연결이 없으면 [**권한 부여됨(Authorized)**]이 됩니다. 생산자 관리자의 작업은 없습니다.

  모든 연결이 제거되면 datashare 상태는 소비자 클러스터에서 [**작업 필요(Action required)**]가 됩니다. 소비자 관리자는 소비자가 데이터 공유를 사용할 수 있을 때 데이터 공유를 데이터 소비자와 다시 연결할 수 있습니다.
+ 소비자 관리자가 데이터 공유를 거부하면 생산자 클러스터의 데이터 공유 상태가 소비자 클러스터에서 **작업 필요** 및 **거부됨**이 됩니다. 생산자 관리자는 데이터 공유 권한을 다시 부여할 수 있습니다. 소비자 관리자의 작업은 없습니다.
+ 생산자 관리자가 데이터 공유에서 권한 부여를 제거하면 생산자 클러스터에서 데이터 공유 상태가 **작업 필요**가 됩니다. 생산자 관리자는 필요한 경우 데이터 공유 권한을 다시 부여할 수 있습니다. 소비자 관리자가 해야 할 작업은 없습니다.

# IAM 정책으로 데이터 공유 API 작업에 대한 액세스 관리
<a name="iam-policy"></a>

데이터 공유 API 작업에 대한 액세스를 제어하려면 IAM 작업 기반 정책을 사용합니다. IAM 정책을 관리하는 방법에 대한 자세한 내용은 *IAM User Guide*의 [Managing IAM policies](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage.html) 섹션을 참조하세요.

데이터 공유 API 작업을 사용하는 데 필요한 권한에 대한 자세한 내용은 *Amazon Redshift 관리 가이드*의 [데이터 공유 API 작업을 사용하는 데 필요한 권한](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-identity-based.html) 섹션을 참조하세요.

계정 간 데이터 공유를 보다 안전하게 하기 위해 `AuthorizeDataShare` 및 `DeauthorizeDataShare` API 작업에 조건부 키 `ConsumerIdentifier`를 사용할 수 있습니다. 이렇게 하면 두 API 작업을 호출할 수 있는 AWS 계정를 명시적으로 제어할 수 있습니다.

자신의 계정이 아닌 소비자에 대한 데이터 공유 권한 부여 또는 권한 부여 취소를 거부할 수 있습니다. 이렇게 하려면 IAM 정책에서 AWS 계정 번호를 지정합니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": [
                "redshift:AuthorizeDataShare",
                "redshift:DeauthorizeDataShare"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "redshift:ConsumerIdentifier": "555555555555"
                }
            }
        }
    ]
}
```

------

IAM 정책에서 DataShareArn **testshare2**가 있는 생산자가 AWS 계정이 111122223333인 소비자와 명시적으로 공유하도록 허용할 수 있습니다.

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "redshift:AuthorizeDataShare",
                "redshift:DeauthorizeDataShare"
            ],
            "Resource": "arn:aws:redshift:us-east-1:666666666666:datashare:af06285e-8a45-4ee9-b598-648c218c8ff1/testshare2",
            "Condition": {
                "StringEquals": {
                    "redshift:ConsumerIdentifier": "111122223333"
                }
            }
        }
    ]
}
```

------

# Amazon Redshift의 소비자 데이터베이스에 연결
<a name="database-direct-connect"></a>

데이터 공유 데이터베이스에 직접 연결하면 다른 유형의 Amazon Redshift 데이터베이스에 연결하는 것과 동일한 방식으로 데이터 공유에서 만들어진 데이터베이스에 직접 연결할 수 있습니다. 예를 들어 JDBC 또는 ODBC 드라이버, Amazon Redshift Query Editor V2 또는 Amazon Redshift 데이터베이스에 연결할 수 있는 기타 도구를 사용하여 데이터 공유에서 만들어진 데이터베이스에 연결하면 됩니다. 자세한 내용은 [SQL 클라이언트 도구를 사용하여 Amazon Redshift 데이터 웨어하우스에 연결](https://docs.aws.amazon.com/redshift/latest/mgmt/connecting-to-cluster.html)을 참조하시기 바랍니다.

## 공유 데이터에 액세스
<a name="database-shared-data"></a>

데이터 공유에서 만들어진 데이터베이스에 연결하면 2부분 표기법(`schema_name.table_name`)을 사용하여 공유 객체를 쿼리할 수 있습니다. 소비자 데이터베이스 검색 경로에서 테이블을 찾을 수 있으면 1부분 표기법(`table_name`)을 사용하는 것도 가능합니다.

데이터베이스 간 쿼리를 수행하려면 3부분 표기법(`consumer_database_name.schema_name.table_name`)을 사용합니다. 이러한 쿼리는 클러스터의 다른 소비자 데이터베이스에서 공유된 객체 또는 로컬 데이터베이스의 로컬 객체를 참조합니다. 동일한 쿼리 내에서 로컬 데이터와 다른 클러스터에서 공유된 데이터를 모두 쿼리할 수 있습니다.

**참고**  
데이터 공유에서 만들어진 데이터베이스에는 로컬 카탈로그가 없습니다. 따라서 `pg_class` 등의 로컬 카탈로그 테이블에 액세스하는 모든 쿼리에는 빈 결과가 반환됩니다.

## 공유 객체의 메타데이터에 액세스
<a name="database-metadata-shared"></a>

클러스터 관리자가 소비자 데이터베이스에서 공유 객체를 검색하도록 지원하기 위해 Amazon Redshift에서는 이러한 객체의 메타데이터를 나열하는 메타데이터 뷰 및 SHOW 명령 모음을 제공합니다. 소비자 데이터베이스에 연결하면 이러한 메타데이터 뷰 및 명령에서 데이터베이스 간 메타데이터 검색이 지원되지 않습니다. 연결된 데이터베이스와 관련 있는 데이터 공유의 공유 객체에 대한 메타데이터만 반환됩니다.

연결된 데이터베이스와 관련 있는 데이터 공유에서 공유 스키마 목록을 보려면 SHOW SCHEMAS를 사용합니다. 자세한 내용은 [SHOW SCHEMAS](r_SHOW_SCHEMAS.md) 섹션을 참조하세요.

연결된 데이터베이스와 관련 있는 데이터 공유에서 공유 스키마의 테이블 목록을 보려면 SHOW TABLES를 사용합니다. 자세한 내용은 [SHOW TABLES](r_SHOW_TABLES.md) 섹션을 참조하세요.

연결된 데이터베이스와 관련 있는 데이터 공유에서 공유 테이블의 열 목록을 보려면 SHOW COLUMNS를 사용합니다. 자세한 내용은 [SHOW COLUMNS](r_SHOW_COLUMNS.md) 섹션을 참조하세요.

연결된 데이터베이스와 관련 있는 데이터 공유에서 공유 스키마 목록을 보려면 SVV\$1ALL\$1SCHEMAS를 사용합니다. 자세한 내용은 [SVV\$1ALL\$1SCHEMAS](r_SVV_ALL_SCHEMAS.md) 섹션을 참조하세요.

연결된 데이터베이스와 관련 있는 데이터 공유에서 공유 테이블 목록을 보려면 SVV\$1ALL\$1TABLES를 사용합니다. 자세한 내용은 [SVV\$1ALL\$1TABLES](r_SVV_ALL_TABLES.md) 섹션을 참조하세요.

연결된 데이터베이스와 관련 있는 데이터 공유에서 공유 열의 목록을 보려면 SVV\$1ALL\$1COLUMNS를 사용합니다. 자세한 내용은 [SVV\$1ALL\$1COLUMNS](r_SVV_ALL_COLUMNS.md) 섹션을 참조하세요.

## 비즈니스 인텔리전스 도구와 Amazon Redshift 데이터 공유 통합
<a name="database-integration"></a>

datashare를 비즈니스 인텔리전스(BI) 도구와 통합하려면 Amazon Redshift JDBC 또는 ODBC 드라이버를 사용하는 것이 좋습니다. Amazon Redshift JDBC 및 ODBC 드라이버는 드라이버의 `GetCatalogs` API 작업을 지원합니다. 이 작업에서는 데이터 공유에서 만들어진 데이터베이스를 포함하여 모든 데이터베이스 목록이 반환됩니다.

드라이버는 `GetCatalogs`가 반환하는 모든 데이터베이스의 데이터를 반환하는 `GetSchemas`, GetTables 등의 다운스트림 작업도 지원합니다. 드라이버는 카탈로그가 직접 호출에 명시적으로 지정되지 않은 경우에도 이 지원을 제공합니다. JDBC 또는 ODBC 드라이버에 관한 자세한 내용은 *Amazon Redshift 관리 가이드*의 [연결 구성](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html) 을 참조하시기 바랍니다.

Amazon Redshift Query Editor V2의 해당 연결 전환 인터페이스에는 소비자 데이터베이스가 포함되어 있습니다. 그러나 대부분의 도구에는 이러한 데이터베이스가 제외되어 있으며, 연결 가능한 데이터베이스로 로컬 클러스터 데이터베이스만 포함되어 있습니다.

**참고**  
내부 유지 관리를 위해 `sys:internal`이라는 새 시스템 데이터베이스가 추가되었습니다. 일부 도구에는 이 시스템 데이터베이스가 연결 가능한 데이터베이스로 포함됩니다. 그러나 객체에 연결하거나 객체에 대해 쿼리를 실행할 수 없습니다.

# Amazon Redshift의 데이터 공유 모니터링 및 감사
<a name="auditing"></a>

Amazon Redshift를 사용하면 데이터 공유 활동을 모니터링하고 감사하여 규정 준수 및 보안을 보장할 수 있습니다.

생산자는 datashare를 감사하여 datashare 변화를 추적할 수 있습니다. 예를 들어 감사는 datashare가 생성되고, 객체가 추가 또는 제거되고, Amazon Redshift 클러스터 및 AWS 계정 또는 AWS 리전에 권한이 부여 또는 취소되는 시점을 추적하는 데 도움이 됩니다.

감사 외에도 생산자와 소비자는 계정, 클러스터 및 객체 수준과 같은 다양한 세부 수준에서 datashare 사용량을 추적합니다. 사용량 추적 및 감사 뷰에 대한 자세한 내용은 [SVL\$1DATASHARE\$1CHANGE\$1LOG](r_SVL_DATASHARE_CHANGE_LOG.md) 및 [SVL\$1DATASHARE\$1USAGE\$1PRODUCER](r_SVL_DATASHARE_USAGE_PRODUCER.md) 섹션을 참조하세요.

시스템 뷰를 쿼리하여 데이터 공유를 모니터링할 수 있습니다.

1. 데이터를 공유하려는 생산자 관리자는 Amazon Redshift 데이터 공유를 만듭니다. 그런 다음 생산자 관리자가 필요한 데이터베이스 객체를 추가합니다. 이는 datashare에 대한 스키마, 테이블 및 보기일 수 있으며 객체를 공유할 소비자 목록을 지정합니다.

   다음 시스템 뷰를 사용하여 생산자 및/또는 소비자 클러스터에서 데이터 공유의 변경 사항 및 사용량을 추적할 수 있는 통합 뷰를 확인하세요:
   + [SYS\$1DATASHARE\$1CHANGE\$1LOG](SYS_DATASHARE_CHANGE_LOG.md)
   + [SYS\$1DATASHARE\$1USAGE\$1CONSUMER](SYS_DATASHARE_USAGE_CONSUMER.md)
   + [SYS\$1DATASHARE\$1USAGE\$1PRODUCER](SYS_DATASHARE_USAGE_PRODUCER.md)

   아웃바운드 datashare에 대한 datashare 객체 및 데이터 소비자 정보를 보려면 다음 시스템 뷰를 사용합니다.
   + [SVV\$1DATASHARES](r_SVV_DATASHARES.md)
   + [SVV\$1DATASHARE\$1CONSUMERS](r_SVV_DATASHARE_CONSUMERS.md)
   + [SVV\$1DATASHARE\$1OBJECTS](r_SVV_DATASHARE_OBJECTS.md)

1. 소비자 관리자는 사용 권한이 부여된 데이터 공유를 보고 [SVV\$1DATASHARES](r_SVV_DATASHARES.md)를 사용해 인바운드 데이터 공유를 확인하여 각 데이터 공유의 내용을 검토합니다.

   공유 데이터를 사용하기 위해 각 소비자 관리자는 데이터 공유에서 Amazon Redshift 데이터베이스를 만듭니다. 그런 다음 관리자는 소비자 클러스터의 적절한 사용자 및 역할에 권한을 할당합니다. 사용자와 역할은 다음 메타데이터 시스템 뷰를 보고 표준 메타데이터 쿼리의 일부로 공유 객체를 나열할 수 있으며 데이터 쿼리를 즉시 시작할 수 있습니다.
   + [SVV\$1REDSHIFT\$1COLUMNS](r_SVV_REDSHIFT_COLUMNS.md)
   + [SVV\$1REDSHIFT\$1DATABASES](r_SVV_REDSHIFT_DATABASES.md)
   + [SVV\$1REDSHIFT\$1FUNCTIONS](r_SVV_REDSHIFT_FUNCTIONS.md)
   + [SVV\$1REDSHIFT\$1SCHEMAS](r_SVV_REDSHIFT_SCHEMAS.md)
   + [SVV\$1REDSHIFT\$1TABLES](r_SVV_REDSHIFT_TABLES.md)

   Amazon Redshift 로컬 및 공유 스키마와 외부 스키마 모두의 객체를 보려면 다음 메타데이터 시스템 뷰를 사용하여 쿼리합니다.
   + [SVV\$1ALL\$1COLUMNS](r_SVV_ALL_COLUMNS.md)
   + [SVV\$1ALL\$1SCHEMAS](r_SVV_ALL_SCHEMAS.md)
   + [SVV\$1ALL\$1TABLES](r_SVV_ALL_TABLES.md)

소비자 데이터베이스에 연결하면 데이터베이스 간 검색이 사용 해제됩니다. 메타데이터 시스템 뷰는 연결된 데이터베이스와 관련 있는 데이터 공유의 공유 객체에 대한 메타데이터만 반환합니다.

## AWS CloudTrail과 Amazon Redshift 데이터 공유 통합
<a name="cloudtrail"></a>

 데이터 공유는 AWS CloudTrail과 통합됩니다. CloudTrail은 Amazon Redshift에서 사용자, 역할 또는 AWS 서비스가 수행한 작업의 레코드를 제공하는 서비스입니다. CloudTrail은 데이터 공유에 대한 모든 API 호출을 이벤트로 캡처합니다. 캡처된 호출에는 AWS CloudTrail 콘솔의 호출과 데이터 공유 작업에 대한 코드 호출이 포함됩니다. Amazon Redshift와 AWS CloudTrail 통합에 대한 자세한 내용은 [CloudTrail을 사용한 로깅](https://docs.aws.amazon.com/redshift/latest/mgmt/logging-with-cloudtrail.html)을 참조하세요.

CloudTrail에 대한 자세한 내용은 [CloudTrail 작동 방식](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/how-cloudtrail-works.html)을 참조하세요.