Amazon Redshift Serverless의 Identity and Access Management - Amazon Redshift

Amazon Redshift Serverless의 Identity and Access Management

Amazon Redshift에 액세스하려면 AWS가 요청을 인증하는 데 사용할 수 있는 자격 증명이 필요합니다. 이러한 보안 인증 정보에는 Amazon Redshift Serverless와 같은 AWS 리소스에 액세스할 수 있는 권한이 있어야 합니다.

다음 섹션에서는 리소스에 액세스할 수 있는지 대상을 제어하여 리소스를 보호할 수 있도록 AWS Identity and Access Management(IAM) 및 Amazon Redshift를 사용하는 방법에 대한 세부 정보를 제공합니다. 자세한 내용은 Amazon Redshift의 Identity and Access Management 섹션을 참조하세요.

Amazon Redshift Serverless에 권한 부여

Amazon Redshift Spectrum에서 다른 AWS 서비스에 액세스하려면 권한이 필요합니다.

다른 AWS 서비스에 액세스할 수 있도록 Amazon Redshift Serverless에 권한 부여

일부 Amazon Redshift 기능을 사용하려면 Amazon Redshift가 사용자 대신 다른 AWS 서비스에 액세스해야 합니다. Amazon Redshift Serverless 인스턴스가 자동으로 작동하도록 엔드포인트에 보안 인증 정보를 제공합니다. 보안 자격 증명을 제공하는 데 선호되는 방법은 AWS Identity and Access Management(IAM) 역할을 지정하는 것입니다. Amazon Redshift 콘솔을 통해 IAM 역할을 생성하고 이를 기본값으로 설정할 수도 있습니다. 자세한 내용은 Amazon Redshift의 기본값으로 IAM 역할 생성 섹션을 참조하세요.

다른 AWS 서비스에 액세스하려면 적절한 권한이 있는 IAM 역할을 생성합니다. 또한 역할을 Amazon Redshift Serverless와 연결해야 합니다. 또한 Amazon Redshift 명령을 실행할 때 역할의 Amazon 리소스 이름(ARN)을 지정하거나 default 키워드를 지정합니다.

https://console.aws.amazon.com/iam/에서 IAM 역할에 대한 신뢰 관계를 변경할 때 서비스 이름으로 redshift.amazonaws.com을 사용해야 합니다. 사용자를 대신하여 다른 AWS 서비스에 액세스하기 위해 IAM 역할을 관리하는 방법에 대한 내용은 Amazon Redshift가 사용자를 대신하여 다른 AWS 서비스에 액세스할 수 있도록 권한 부여 섹션을 참조하세요.

Amazon Redshift의 기본값으로 IAM 역할 생성

Redshift 콘솔을 통해 IAM 역할을 생성하면 Amazon Redshift가 프로그래밍 방식으로 AWS 계정에 역할을 생성합니다. 또한 Amazon Redshift는 기존 AWS 관리형 정책을 여기에 자동으로 연결합니다. 이 접근 방식을 사용하면 Amazon Redshift 콘솔 내에 머물 수 있고 역할 생성을 위해 IAM 콘솔로 전환할 필요가 없습니다.

클러스터를 위해 콘솔을 통해 생성한 IAM 역할에는 AmazonRedshiftAllCommandsFullAccess 관리형 정책이 자동으로 연결됩니다. 이 IAM 역할을 통해 Amazon Redshift는 IAM 계정의 AWS 리소스에 대한 데이터를 복사, 언로드, 쿼리 및 분석할 수 있습니다. 관련 명령에는 COPY, UNLOAD, CREATE EXTERNAL FUNCTION, CREATE EXTERNAL TABLE, CREATE EXTERNAL SCHEMA, CREATE MODEL 및 CREATE LIBRARY가 포함됩니다. Amazon Redshift의 기본 역할로 IAM 역할을 생성하는 방법에 대한 자세한 내용은 Amazon Redshift의 기본값으로 IAM 역할 생성 섹션을 참조하세요.

Amazon Redshift의 기본값으로 IAM 역할을 생성하기 시작하려면 AWS Management Console을 열고 Amazon Redshift 콘솔을 선택한 다음 Amazon Redshift Serverless 사용해 보기(Try Amazon Redshift Serverless)를 선택합니다. Amazon Redshift Serverless 콘솔에서 설정 사용자 지정(Customize settings)을 선택합니다. 권한(Permissions)에서 콘솔을 사용한 IAM 역할 연결 관리의 절차를 따릅니다.

이미 Amazon Redshift Serverless가 있고 이에 대한 IAM 역할을 구성하려는 경우 AWS Management Console을 엽니다. Amazon Redshift 콘솔을 선택한 다음 서버리스로 이동(Go to serverless)을 선택합니다. Amazon Redshift Serverless 콘솔에서 Serverless 구성(Serverless configuration)을 선택한 다음 데이터 액세스(Data access)를 선택합니다. 권한(Permissions)에서 콘솔을 사용한 IAM 역할 연결 관리의 절차를 따릅니다.

네임스페이스에 IAM 역할 할당

각 IAM 역할은 각 역할이 AWS에서 수행할 수 있는 작업을 결정하는 권한 정책이 있는 AWS 자격 증명입니다. 역할은 역할이 필요한 사용자라면 누구나 맡을 수 있습니다. 또한 각 네임스페이스는 테이블, 스키마 등의 객체와 사용자의 모음입니다. Amazon Redshift Serverless를 사용하는 경우 여러 IAM 역할을 네임스페이스에 연결할 수 있습니다. 이렇게 하면 데이터베이스 객체 모음에 대한 권한을 적절히 구성하기가 더 쉬워져 역할들이 내부 데이터와 외부 데이터 모두에 대해 작업을 수행할 수 있습니다. 예를 들어 Amazon Redshift 데이터베이스에서 COPY 명령을 실행하여 Amazon S3에서 데이터를 검색하고 Redshift 테이블을 채울 수 있습니다.

이 섹션의 앞부분에서 설명한 대로 콘솔을 사용하여 여러 역할을 네임스페이스에 연결할 수 있습니다. API 명령 CreateNamespace 또는 CLI 명령 create-namespace를 사용할 수도 있습니다. API 또는 CLI 명령을 사용하면 IAMRoles에 하나 이상의 역할을 채워 IAM 역할을 네임스페이스에 할당할 수 있습니다. 특히 모음에 특정 역할에 대한 ARN을 추가합니다.

네임스페이스 관련 IAM 역할 관리

AWS Management Console에서 AWS Identity and Access Management의 역할에 대한 권한 정책을 관리할 수 있습니다. 네임스페이스 구성(Namespace configuration)에서 사용 가능한 설정을 사용하여 네임스페이스에 대한 IAM 역할을 관리할 수 있습니다. 네임스페이스 및 Amazon Redshift Serverless에서 네임스페이스를 사용하는 방법에 대한 자세한 내용은 Amazon Redshift Serverless 작업 그룹 및 네임스페이스 개요 섹션을 참조하세요.

Amazon Redshift용 IAM 자격 증명 시작하기

Amazon Redshift 콘솔에 처음 로그인하고 Amazon Redshift Serverless를 처음 사용하는 경우 필요한 정책을 포함하는 IAM 역할이 연결된 사용자로 로그인하는 것이 좋습니다. Amazon Redshift Serverless 인스턴스 생성을 시작한 후 Amazon Redshift는 로그인할 때 사용된 IAM 역할 이름을 기록합니다. 동일한 자격 증명을 사용하여 Amazon Redshift 콘솔과 Amazon Redshift Serverless 콘솔에 로그인할 수 있습니다.

Amazon Redshift Serverless 인스턴스를 생성하는 동안 데이터베이스를 생성할 수 있습니다. 쿼리 편집기 v2를 사용하여 임시 자격 증명 옵션으로 데이터베이스에 연결합니다.

데이터베이스에 대해 유지되는 새 관리자 이름과 암호를 추가하려면 관리자 자격 증명 사용자 지정(Customize admin user credentials)을 선택하고 새 관리자 이름과 관리자 암호를 입력합니다.

Amazon Redshift Serverless 사용을 시작하고 콘솔에서 처음으로 작업 그룹 및 네임스페이스를 생성하려면 권한 정책이 연결된 IAM 역할을 사용합니다. 이 역할에 관리자 권한 arn:aws:iam::aws:policy/AdministratorAccess 또는 IAM 정책에 연결된 전체 Amazon Redshift 권한 arn:aws:iam::aws:policy/AmazonRedshiftFullAccess가 있는지 확인합니다.

다음 시나리오에서는 Amazon Redshift Serverless 콘솔을 시작할 때 Amazon Redshift Serverless에서 IAM 자격 증명을 사용하는 방법을 간략하게 설명합니다.

  • 기본 설정 사용(Use default settings)을 선택하면 Amazon Redshift Serverless가 현재 IAM 자격 증명을 데이터베이스 슈퍼 사용자로 변환합니다. Amazon Redshift Serverless 콘솔에서 동일한 IAM 자격 증명을 사용하여 Amazon Redshift Serverless의 데이터베이스에서 수퍼유저 작업을 수행할 수 있습니다.

  • Amazon Redshift Serverless에서 관리자 사용자 이름(Admin user name)과 암호를 지정하지 않고 설정 사용자 지정(Customize settings)을 선택하는 경우 현재 IAM 보안 인증 정보가 기본 관리자 보안 인증 정보로 사용됩니다.

  • 설정 사용자 지정(Customize settings)을 선택하고 관리자 이름(Admin user name)과 암호를 지정하는 경우 Amazon Redshift Serverless는 현재 IAM 자격 증명을 데이터베이스 슈퍼 사용자로 변환합니다. Amazon Redshift Serverless는 수퍼 사용자로도 또 다른 장기 로그인 사용자 이름과 암호 페어를 생성합니다. 현재 IAM 자격 증명 또는 생성된 사용자 이름과 암호 페어를 사용하여 슈퍼 사용자로 데이터베이스에 로그인할 수 있습니다.

데이터베이스 역할 권한으로 Amazon Redshift Serverless 데이터베이스 객체에 대한 액세스 관리

이 절차에서는 Amazon Redshift 데이터베이스 역할을 통해 테이블을 쿼리할 수 있는 권한을 부여하는 방법을 보여 줍니다. 역할은 IAM에서 사용자에게 첨부된 태그를 통해 할당되며, 이 태그는 사용자가 로그인할 때 Amazon Redshift에 전달됩니다. Amazon Redshift Serverless에서 페더레이션된 사용자에게 부여할 데이터베이스 역할 정의의 개념을 예시를 통해 설명합니다. 이 단계를 완료하면 사용자를 데이터베이스 역할에 연결하고 각 데이터베이스 객체에 대한 권한을 설정하지 않아도 된다는 이점이 있습니다. 이렇게 하면 사용자가 테이블에 데이터를 쿼리, 수정 또는 추가하고 다른 작업을 수행할 수 있는 기능을 간편하게 관리할 수 있습니다.

이 절차에서는 이미 Amazon Redshift Serverless 데이터베이스를 설정했으며 데이터베이스에 권한을 부여할 수 있는 기능이 있다고 가정합니다. 또한 AWS 콘솔에서 IAM 사용자를 만들고, IAM 역할을 만들고, 정책 권한을 할당할 수 있는 권한이 있다고 가정합니다.

  1. IAM 콘솔을 사용하여 IAM 사용자를 만듭니다. 나중에 이 사용자로 데이터베이스에 연결합니다.

  2. 쿼리 편집기 v2 또는 다른 SQL 클라이언트를 사용하여 Redshift 데이터베이스 역할을 만듭니다. 데이터베이스 역할 생성에 대한 자세한 내용은 CREATE ROLE을 참조하세요.

    CREATE ROLE urban_planning;

    SVV_ROLES 시스템 뷰를 쿼리하여 역할이 생성되었는지 확인합니다. 또한 시스템 역할도 반환합니다.

    SELECT * from SVV_ROLES;
  3. 생성한 데이터베이스 역할에 테이블에서 선택할 수 있는 권한을 부여합니다. (생성한 IAM 사용자는 결국 데이터베이스 역할을 통해 로그인하고 테이블에서 레코드를 선택하게 됩니다.) 다음 코드 예제의 역할 이름과 테이블 이름은 샘플입니다. 여기에서는 cities라는 테이블에서 선택할 수 있는 권한이 부여됩니다.

    GRANT SELECT on TABLE cities to ROLE urban_planning;
  4. AWS Identity and Access Management 콘솔을 사용하여 IAM 역할을 생성합니다. 이 역할은 쿼리 편집기 v2를 사용할 수 있는 권한을 부여합니다. 새 IAM 역할을 만들고 신뢰할 수 있는 엔터티 유형에 대해 AWS 계정을 선택합니다. 그런 다음 이 계정을 선택합니다. 역할에 다음 정책 권한을 부여합니다.

    • AmazonRedshiftReadOnlyAccess

    • tag:GetResources

    • tag:GetTagKeys

    • sqlworkbench:ListDatabases 및 sqlworkbench:UpdateConnection을 포함한 sqlworkbench에 대한 모든 작업.

  5. IAM 콘솔에서 이전에 만든 IAM 사용자에 RedshiftDbRoles 가 있는 태그를 추가합니다.  태그의 값은 첫 번째 단계에서 만든 데이터베이스 역할과 일치해야 합니다. 샘플에서는 urban_planning입니다.

이 단계를 완료한 후 IAM 콘솔에서 만든 사용자에게 IAM 역할을 할당합니다. 사용자가 쿼리 편집기 v2로 데이터베이스에 로그인하면 태그에 있는 데이터베이스 역할 이름이 Amazon Redshift에 전달되어 해당 사용자와 연결됩니다. 따라서 데이터베이스 역할을 통해 적절한 테이블을 쿼리할 수 있습니다. 예를 들어 이 샘플의 사용자는 urban_planning 데이터베이스 역할을 통해 cities 테이블을 쿼리할 수 있습니다.