Amazon Redshift Serverless에서 페더레이션 사용자에게 부여할 데이터베이스 역할 정의 - Amazon Redshift

Amazon Redshift Serverless에서 페더레이션 사용자에게 부여할 데이터베이스 역할 정의

조직의 일원에게는 관련된 역할 모음이 있습니다. 예를 들어 프로그래머매니저와 같은 직무에 대한 역할이 있습니다. 역할에 따라 액세스할 수 있는 애플리케이션 및 데이터가 결정됩니다. 대부분의 조직에서는 Microsoft Active Directory와 같은 ID 공급업체를 사용하여 사용자 및 그룹에 역할을 할당합니다. 조직에서 개별 사용자를 관리할 필요성이 줄어들기 때문에 리소스 액세스를 제어하는 데 역할을 사용하는 경우가 늘어났습니다.

최근에 역할 기반 액세스 제어가 Amazon Redshift Serverless에 도입되었습니다. 예를 들어 데이터베이스 역할을 사용하면 스키마나 테이블과 같은 데이터 및 객체에 대한 액세스를 보호할 수 있습니다. 또는 역할을 사용하여 시스템 모니터 또는 데이터베이스 관리자와 같은 상승된 권한 집합을 정의할 수 있습니다. 그러나 데이터베이스 역할에 리소스 권한을 부여한 후에는 조직의 사용자 역할을 데이터베이스 역할에 연결하는 추가 단계가 있습니다. 처음 로그인할 때 SQL 문을 실행하여 각 사용자에게 데이터베이스 역할을 할당할 수 있지만, 이렇게 하려면 많은 노력이 필요합니다. 더 쉬운 방법은 부여할 데이터베이스 역할을 정의하고 이를 Amazon Redshift Serverless로 전달하는 것입니다. 이렇게 하면 초기 로그인 프로세스를 간소화할 수 있다는 이점이 있습니다.

GetCredentials를 사용하여 Amazon Redshift Serverless에 역할을 전달할 수 있습니다. 사용자가 Amazon Redshift Serverless 데이터베이스에 처음으로 로그인하면 연결된 데이터베이스 사용자가 생성되고 일치하는 데이터베이스 역할에 매핑됩니다. 이 주제에서는 Amazon Redshift Serverless에 역할을 전달하는 메커니즘을 자세히 설명합니다.

데이터베이스 역할 전달에는 몇 가지 주요 사용 사례가 있습니다.

  • 사용자가 일반적으로 페더레이션이 구성된 타사 ID 공급업체를 통해 로그인하고 세션 태그를 통해 역할을 전달하는 경우

  • 사용자가 IAM 로그인 보안 인증 정보를 통해 로그인하고 태그 키 및 값을 통해 역할이 전달되는 경우

역할 기반 액세스 제어에 대한 자세한 내용은 역할 기반 액세스 제어(RBAC)를 참조하세요.

데이터베이스 역할 정의

Amazon Redshift Serverless에 역할을 전달하려면 먼저 데이터베이스에서 데이터베이스 역할을 구성하고 데이터베이스 리소스에 대한 적절한 권한을 부여해야 합니다. 예를 들어 간단한 시나리오에서는 sales라는 데이터베이스 역할을 만들고 판매 데이터가 있는 쿼리 테이블에 대한 액세스 권한을 부여할 수 있습니다. 데이터베이스 역할을 생성하고 권한을 부여하는 방법에 대한 자세한 내용은 CREATE ROLEGRANT를 참조하세요.

페더레이션 사용자에게 부여할 데이터베이스 역할을 정의하는 사용 사례

이 섹션에서는 Amazon Redshift Serverless에 데이터베이스 역할을 전달하여 데이터베이스 리소스에 대한 액세스를 간소화할 수 있는 몇 가지 사용 사례를 간략하게 설명합니다.

ID 공급업체를 사용하여 로그인

첫 번째 사용 사례에서는 조직의 ID 및 액세스 관리 서비스에 사용자 ID가 있다고 가정합니다. 이 서비스는 JumpCloud 또는 Okta와 같은 클라우드 기반이거나 Microsoft Active Directory와 같은 온프레미스일 수 있습니다. 목표는 사용자가 쿼리 편집기 V2 또는 JDBC와 같은 클라이언트에 로그인할 때 ID 공급업체의 사용자 역할을 데이터베이스 역할에 자동으로 매핑하는 것입니다. 이를 설정하려면 몇 가지 구성 작업을 완료해야 합니다. 여기에는 다음이 포함됩니다.

  1. 신뢰 관계를 사용하여 ID 제공업체(IdP)와의 페더레이션 통합을 구성합니다. 이는 전제 조건입니다. 이를 설정하면 ID 공급업체는 SAML 어설션을 통해 사용자를 인증하고 로그인 보안 인증 정보를 제공할 책임이 있게 됩니다. 자세한 내용은 AWS와 서드 파티 SAML 솔루션 공급업체 통합을 참조하세요. Active Directory Federation Services(AD FS)를 통해 Amazon Redshift 쿼리 편집기 V2에 대한 액세스 페더레이션 또는 Okta를 통해 Amazon Redshift 쿼리 편집기 v2에 대한 Single Sign-On 액세스 페더레이션에서 자세한 내용을 확인할 수도 있습니다.

  2. 사용자는 다음 정책 권한이 있어야 합니다.

    • GetCredentials – Amazon Redshift Serverless에 로그인하기 위한 임시 인증용 보안 인증 정보 제공

    • sts:AssumeRoleWithSAML – 엔터프라이즈 ID 저장소 또는 디렉터리를 역할 기반 AWS 액세스에 연결하는 메커니즘 제공

    • sts:TagSession – ID 제공업체 보안 주체에 대한 태그 세션 작업 권한

    이 경우 AssumeRoleWithSAML에서 SAML 인증 응답을 통해 인증된 사용자에 대한 보안 인증 정보 집합을 반환합니다. 이 작업은 사용자별 보안 인증 정보 없이 ID 저장소 또는 디렉터리를 역할 기반 AWS 액세스에 연결하는 메커니즘을 제공합니다. AssumeRoleWithSAML에 대한 권한이 있는 사용자의 경우 ID 공급업체는 역할 정보를 전달하는 데 사용되는 SAML 어설션을 관리할 책임이 있습니다.

    가장 좋은 방법은 권한 정책을 IAM 역할에 연결한 다음 필요에 따라 사용자 및 그룹에 할당하는 것입니다. 자세한 내용은 Amazon Redshift의 Identity and Access Management를 참조하세요.

  3. 콜론으로 구분된 역할 값을 사용하여 role1:role2 형식으로 태그 RedshiftDbRoles를 구성합니다. 예를 들어 manager:engineer입니다. 이는 ID 공급업체에 구성된 세션 태그 구현에서 검색할 수 있습니다. SAML 인증 요청은 프로그래밍 방식으로 역할을 전달합니다. 세션 태그 전달에 대한 자세한 내용은 AWS STS에서 세션 태그 전달을 참조하세요.

    데이터베이스에 존재하지 않는 역할 이름을 전달하면 해당 역할 이름은 무시됩니다.

이 사용 사례에서는 사용자가 페더레이션 ID를 사용하여 로그인하면 권한 부여 요청에서 세션 태그 키와 값을 통해 해당 역할이 전달됩니다. 이후 권한이 부여된 다음 GetCredentials가 데이터베이스로 역할을 전달합니다. 연결에 성공하면 데이터베이스 역할이 매핑되고 사용자는 역할에 해당하는 데이터베이스 작업을 수행할 수 있습니다. 작업의 핵심은 초기 권한 부여 요청에서 RedshiftDbRoles 세션 태그에 역할이 할당되는 것입니다. 세션 태그 전달에 대한 자세한 내용은 AssumeRoleWithSAML을 사용하여 세션 태그 전달을 참조하세요.

IAM 보안 인증 정보를 사용하여 로그인

두 번째 사용 사례에서는 사용자의 역할을 전달하고 사용자는 IAM 보안 인증 정보를 통해 데이터베이스 클라이언트 애플리케이션에 액세스할 수 있습니다.

  1. 이 경우 로그인하는 사용자에게는 다음 작업에 대한 정책 권한이 할당되어야 합니다.

    • tag:GetResources – 지정된 태그와 연결된 태그 지정 리소스 반환

    • tag:GetTagKeys – 현재 사용 중인 태그 키 반환

      가장 좋은 방법은 권한 정책을 IAM 역할에 연결한 다음 필요에 따라 사용자 및 그룹에 할당하는 것입니다. 자세한 내용은 Amazon Redshift의 Identity and Access Management를 참조하세요.

  2. Amazon Redshift Serverless와 같은 데이터베이스 서비스에 액세스하려면 허용 권한도 필요합니다.

  3. 이 사용 사례의 경우 AWS Identity and Access Management에서 역할에 대한 태그 값을 구성하세요. 태그를 편집하고 역할이 포함된 태그 값 문자열과 함께 RedshiftDbRoles라는 태그 키를 만들도록 선택할 수 있습니다. 예를 들어 manager:engineer를 만들 수 있습니다.

사용자가 로그인하면 해당 역할이 권한 부여 요청에 추가되고 데이터베이스로 전달됩니다. 이는 기존 데이터베이스 역할에 매핑됩니다.

추가적인 리소스

사용 사례에서 언급한 대로 IdP와 AWS 간의 신뢰 관계를 구성할 수 있습니다. 자세한 내용은 신뢰 당사자 신뢰로 SAML 2.0 IdP 구성 및 클레임 추가를 참조하세요.