데이터에 대한 쓰기 액세스 공유(미리 보기) - Amazon Redshift

데이터에 대한 쓰기 액세스 공유(미리 보기)

동일한 AWS 계정에 있는 서로 다른 Amazon Redshift 클러스터 또는 Amazon Redshift Serverless 작업 그룹 내에서 계정과 리전 간에 읽기 및 쓰기 모두에 대해 데이터베이스 객체를 공유할 수 있습니다. 이 주제에 나온 절차는 쓰기 권한이 포함된 데이터 공유 설정 방법을 보여줍니다. 서로 다른 테이블에 대해 SELECT, INSERT, UPDATE 등의 권한을 부여하고 스키마에 대해 USAGE 및 CREATE와 같은 권한을 부여할 수 있습니다. 데이터는 쓰기 트랜잭션이 커밋되는 즉시 라이브 상태로 모든 웨어하우스에서 사용할 수 있습니다. 생산자 계정 관리자는 특정 네임스페이스나 리전에 읽기 전용, 읽기 및 쓰기 또는 데이터에 대한 모든 액세스 권한을 부여할지를 결정할 수 있습니다.

다음 섹션에서는 데이터 공유를 구성하는 방법을 보여줍니다. 이 절차에서는 프로비저닝된 클러스터 또는 Amazon Redshift Serverless 작업 그룹의 데이터베이스에서 작업하는 것으로 가정합니다.

읽기 전용 데이터 공유와 읽기 및 쓰기를 위한 데이터 공유 비교

이전에는 데이터 공유의 객체가 모든 상황에서 읽기 전용이었습니다. 데이터 공유의 객체에 쓰는 기능은 새로운 기능입니다. 생산자가 데이터 공유의 객체에 INSERT 또는 CREATE와 같은 쓰기 권한을 특별히 부여한 경우에만 데이터 공유의 객체에 쓰기가 활성화됩니다. 또한 계정 간 공유의 경우 생산자는 쓰기에 대한 데이터 공유를 승인하고 소비자는 쓰기를 위해 특정 클러스터와 작업 그룹을 연결해야 합니다. 자세한 내용은 이 주제의 후속 섹션에 나와 있습니다.

데이터 공유에 부여할 수 있는 권한(미리 보기)

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

스키마:

  • 객체

  • CREATE

테이블:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • TRUNCATE

  • DROP

  • REFERENCES

함수:

  • EXECUTE

데이터베이스

  • CREATE

미리 보기 상태에서 데이터 공유 시 요구 사항 및 제한 사항

  • 연결 - 데이터 공유에 쓰려면 데이터 공유 데이터베이스에 직접 연결하거나 USE 명령을 실행해야 합니다. 하지만 세 부분으로 구성된 표기법을 사용하여 이 작업을 수행할 수 있는 기능을 곧 사용할 수 있게 될 예정입니다.

  • 가용성 - 이 기능을 사용하려면 Serverless 작업 그룹, ra3.4xl 클러스터 또는 ra3.16xl 클러스터를 사용해야 합니다. ra3.xlplus 클러스터가 지원될 계획입니다.

  • 메타데이터 검색 - Redshift JDBC, ODBC 또는 Python 드라이버를 통해 데이터 공유 데이터베이스에 직접 연결된 소비자인 경우 다음과 같은 방법으로 카탈로그 데이터를 볼 수 있습니다.

  • 데이터 API - 데이터 API를 통해 데이터 공유 데이터베이스에 연결할 수 없습니다. 이 기능은 곧 지원될 예정입니다.

  • 권한 가시성 - 소비자는 데이터 공유에 부여된 권한을 볼 수 없습니다. 이 기능을 곧 추가할 예정입니다.

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

  • 격리 수준 - 다른 Serverless 작업 그룹과 클러스터가 데이터베이스에 쓸 수 있으려면 데이터베이스의 격리 수준이 스냅샷 격리여야 합니다.

  • 자동 작업 - 소비자가 데이터 공유 객체에 쓰는 경우 자동 분석 작업이 트리거되지 않습니다. 따라서 테이블 통계를 업데이트하려면 생산자가 테이블에 데이터를 삽입한 후 분석을 수동으로 실행해야 합니다. 이렇게 하지 않으면 쿼리 계획이 최적화되지 않을 수 있습니다.

  • 다중 문 쿼리 및 트랜잭션 - 트랜잭션 블록 외부의 다중 문 쿼리는 현재 지원되지 않습니다. 따라서 dbeaver와 같은 쿼리 에디터를 사용하고 쓰기 쿼리가 여러 개 있는 경우 쿼리를 명시적인 BEGIN...END 트랜잭션 문으로 래핑해야 합니다.

지원되는 SQL 문

다음 문은 쓰기를 포함한 데이터 공유의 공개 미리 보기 릴리스에서 지원됩니다.

  • BEGIN | START TRANSACTION

  • END | COMMIT | ROLLBACK

  • COPY(COMPUPDATE 제외)

  • { CREATE | DROP } SCHEMA

  • { CREATE | DROP | SHOW } TABLE

  • CREATE TABLE table_name AS

  • DELETE

  • { GRANT | REVOKE } privilege_name ON OBJECT_TYPE object_name TO consumer_user

  • INSERT

  • SELECT

  • INSERT INTO SELECT

  • TRUNCATE

  • UPDATE

  • Super 데이터 유형 열

지원되지 않는 문 유형 - 다음은 지원되지 않습니다.

  • 생산자에 쓸 때 소비자 웨어하우스에 대한 다중 문 쿼리

  • 소비자가 생산자에게 쓰는 동시성 조정 쿼리

  • 소비자가 생산자에게 쓰는 자동 복사 작업 쓰기

  • 소비자가 생산자에게 쓰는 스트리밍 작업

  • 생산자 클러스터에서 소비자가 제로 ETL 통합 테이블 생성 제로 ETL 통합에 대한 자세한 내용은 제로 ETL 통합 작업을 참조하세요.

  • 인터리브 정렬 키를 사용한 테이블에 쓰기

생산자 계정 관리자의 쓰기 권한이 있는 계정 내에서 데이터 공유(미리 보기)

이전에는 데이터 공유의 객체가 모든 상황에서 읽기 전용이었습니다. 데이터 공유의 객체에 쓰는 기능은 새로운 기능입니다. 생산자가 데이터 공유의 객체에 INSERT 또는 CREATE와 같은 쓰기 권한을 특별히 부여한 경우에만 데이터 공유의 객체에 쓰기가 활성화됩니다. 자세한 내용은 이 주제의 후속 섹션에 나와 있습니다.

읽기 전용 데이터 공유에 대한 기존 설명서를 찾으려면 Amazon Redshift의 클러스터 간에 데이터 공유에서 확인할 수 있습니다.

데이터 공유를 시작하려면 생산자 측 관리자가 데이터 공유를 생성하고 여기에 객체를 추가합니다.

  1. 생산자 데이터베이스 소유자 또는 슈퍼 사용자가 데이터 공유를 생성합니다. 데이터 공유는 데이터베이스 객체, 권한 및 소비자가 포함된 논리적 컨테이너입니다. 소비자는 사용자 계정 및 기타 계정의 클러스터 또는 Amazon Redshift Serverless 네임스페이스입니다. 각 데이터 공유는 해당 데이터 공유가 생성된 데이터베이스와 연결되며 해당 데이터베이스의 객체만 추가할 수 있습니다. 다음 명령을 실행하여 데이터 공유를 생성합니다.

    CREATE DATASHARE my_datashare [PUBLICACCESSIBLE = TRUE];

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

    데이터 공유 소유자는 데이터 공유에 추가할 스키마에 대해 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;
  2. 관리자는 스키마를 추가한 후 스키마의 객체에 대해 데이터 공유 권한을 부여할 수 있습니다. 이 권한은 읽기 및 쓰기 권한일 수 있습니다. 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;
  3. 관리자는 계정의 특정 네임스페이스에 데이터 공유 사용 권한을 부여합니다. ARN의 일부인 네임스페이스 ID는 클러스터 세부 정보 페이지, Amazon Redshift Serverless 네임스페이스 세부 정보 페이지 또는 SELECT current_namespace; 명령을 실행하여 찾을 수 있습니다. 자세한 내용은 CURRENT_NAMESPACE를 참조하세요.

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