Azure
Microsoft Azure AD를 IdP(자격 증명 공급자)로 사용하여 Amazon Redshift 클러스터에 액세스할 수 있습니다. 이 자습서에서는 Azure를 ID 제공업체(idP)로 사용하여 Amazon Redshift 클러스터에 액세스하는 방법을 보여 줍니다.
Microsoft Azure AD Single Sign-On을 사용하여 Amazon Redshift 액세스를 페더레이션하는 방법을 알아봅니다.
1단계: Azure와 AWS 계정을 서로 신뢰하도록 설정
다음 절차에서는 신뢰 관계를 설정하는 방법을 설명합니다.
Azure AD와 AWS 계정을 서로 신뢰하도록 설정하려면
-
Azure AD 사용자가 연결할 기존 Amazon Redshift 클러스터를 사용하거나 생성합니다. 연결을 구성하려면 이 클러스터의 특정 속성(예: 클러스터 식별자)이 필요합니다. 자세한 내용은 클러스터 생성 섹션을 참조하세요.
-
Microsoft Azure 포털에서 AWS에 사용되는 Azure Active Directory, 그룹, 사용자를 설정합니다.
-
Microsoft Azure 포털에서 Amazon Redshift를 AWS 콘솔에 대한 통합 인증 및 Amazon Redshift에 대한 페더레이션 로그인에 사용할 엔터프라이즈 애플리케이션으로 추가합니다. Enterprise application(엔터프라이즈 애플리케이션)을 선택합니다.
-
+New application(새 애플리케이션 추가)을 선택합니다. 애플리케이션 추가 페이지가 나타납니다.
-
검색 필드에서
AWS
를 검색합니다. -
[Amazon Web Services(AWS)]와 [추가(Add)]를 차례로 선택합니다. 그러면 AWS 애플리케이션이 생성됩니다.
-
관리에서 Single sign-on을 선택합니다.
-
SAML을 선택합니다. Amazon Web Services(AWS) | SAML -based Sign-on(SAML 기반 로그온) 페이지가 나타납니다.
-
예를 선택하여 Set up Single Sign-On with SAML(SAML을 사용하여 Single Sign-On 설정) 페이지로 이동합니다. 이 페이지에는 미리 구성된 Single Sign-On 관련 속성 목록이 나와 있습니다.
-
Basic SAML Configuration(기본 SAML 구성)에서 편집 아이콘을 선택하고 저장을 선택합니다.
-
둘 이상의 애플리케이션에 대해 구성하는 경우 식별자 값을 제공합니다. 예를 들면
를(을) 입력합니다. 두 번째 애플리케이션부터 이 형식을 # 기호와 함께 사용하여 고유한 SPN 값을 지정합니다.https://signin.aws.amazon.com/saml#2
-
User Attributes and Claims(사용자 속성 및 클레임) 섹션에서 편집 아이콘을 선택합니다.
기본적으로 고유한 사용자 식별자(UID), 역할, RoleSessionName 및 SessionDuration 클레임은 미리 구성되어 있습니다.
-
+ Add new claim(새 클레임 추가)을 선택하여 데이터베이스 사용자에 대한 클레임을 추가합니다.
이름(Name)에
DbUser
을 입력합니다.네임스페이스(Namespace)에
https://redshift.amazon.com/SAML/Attributes
를 입력합니다.소스(Source)에서 속성(Attribute)를 선택합니다.
소스 속성에서 user.userprincipalname을 선택합니다. 그런 다음 저장(Save)을 선택합니다.
-
+ Add new claim(새 클레임 추가)을 선택하여 AutoCreate에 대한 클레임을 추가합니다.
Name(이름)에
AutoCreate
을 입력합니다.네임스페이스(Namespace)에
https://redshift.amazon.com/SAML/Attributes
를 입력합니다.Source(소스)에서Attribute(속성)를 선택합니다.
소스 속성에서 "true"를 선택합니다. 그런 다음 Save(저장)을 선택합니다.
여기에서
는 AWS 계정,123456789012
는 생성한 IAM 역할,AzureSSO
는 IAM 공급자입니다.AzureADProvider
클레임 이름 값 고유한 사용자 식별자(이름 ID)
user.userprincipalname
https://aws.amazon.com/SAML/Attributes/SessionDuration
"900"
https://aws.amazon.com/SAML/Attributes/Role
arn:aws:iam::
123456789012
:role/AzureSSO
,arn:aws:iam::123456789012
:saml-provider/AzureADProvider
https://aws.amazon.com/SAML/Attributes/RoleSessionName
user.userprincipalname
https://redshift.amazon.com/SAML/Attributes/AutoCreate
"true"
https://redshift.amazon.com/SAML/Attributes/DbGroups
user.assignedroles
https://redshift.amazon.com/SAML/Attributes/DbUser
user.userprincipalname
-
앱 등록 >
> 인증에서 모바일 및 데스크톱 애플리케이션을 추가합니다. URL을 http://localhost/redshift/로 지정합니다.your-application-name
-
SAML Signing Certificate(SAML 서명 인증서) 섹션에서 다운로드를 선택하여 IAM SAML 자격 증명 공급자를 만들 때 사용할 연동 메타데이터 XML 파일을 다운로드하고 저장합니다. 이 파일은 Single Sign-On 페더레이션 자격 증명을 생성하는 데 사용됩니다.
-
IAM 콘솔에서 IAM SAML 자격 증명 공급자를 만듭니다. 제공하는 메타데이터 문서는 Azure 엔터프라이즈 애플리케이션을 설정할 때 저장한 연동 메타데이터 XML 파일입니다. 자세한 단계는 IAM User Guide의 Creating and Managing an IAM Identity Provider (Console)를 참조하세요.
-
IAM 콘솔에서 SAML 2.0 연동을 위한 IAM 역할을 만듭니다. 자세한 단계는 IAM User Guide의 Creating a Role for SAML을 참조하세요.
IAM 콘솔에서 SAML 2.0 연동을 위해 생성한 IAM 역할에 연결할 수 있는 IAM 정책을 만듭니다. 자세한 단계는 IAM User Guide의 Creating IAM Policies (Console)를 참조하세요.
환경에 맞게 다음 정책(JSON 형식)을 수정합니다.
을 해당 클러스터의 AWS 리전으로 대체합니다.us-west-1
를 AWS 계정으로 대체합니다.123456789012
를 클러스터 식별자(또는 모든 클러스터의 경우cluster-identifier
*
)로 대체합니다.
를 데이터베이스(또는 모든 클러스터의 경우dev
*
)로 대체합니다.
을 해당 IAM 역할의 고유 식별자로 대체합니다.AROAJ2UCCR6DPCEXAMPLE
은 해당 테넌트 또는 회사 이메일 도메인으로 대체합니다.example.com
은 사용자를 할당할 데이터베이스 그룹으로 대체합니다.my_dbgroup
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "redshift:GetClusterCredentials", "Resource": [ "arn:aws:redshift:
us-west-1
:123456789012
:dbname:cluster-identifier
/dev
", "arn:aws:redshift:us-west-1
:123456789012
:dbuser:cluster-identifier
/${redshift:DbUser}", "arn:aws:redshift:us-west-1
:123456789012
:cluster:cluster-identifier
" ], "Condition": { "StringEquals": { "aws:userid": "AROAJ2UCCR6DPCEXAMPLE
:${redshift:DbUser}@example.com
" } } }, { "Effect": "Allow", "Action": "redshift:CreateClusterUser", "Resource": "arn:aws:redshift:us-west-1
:123456789012
:dbuser:cluster-identifier
/${redshift:DbUser}" }, { "Effect": "Allow", "Action": "redshift:JoinGroup", "Resource": "arn:aws:redshift:us-west-1
:123456789012
:dbgroup:cluster-identifier
/my_dbgroup
" }, { "Effect": "Allow", "Action": [ "redshift:DescribeClusters", "iam:ListRoles" ], "Resource": "*" } ] }이 정책은 다음과 같이 권한을 부여합니다.
첫 번째 섹션에서는 지정된 클러스터에 대한 임시 자격 증명을 얻기 위해
GetClusterCredentials
API 작업에 권한을 부여합니다. 이 예에서 리소스는
로, 데이터베이스cluster-identifier
가 있으며, 계정dev
와 AWS 리전123456789012
에 있습니다.us-west-1
${redshift:DbUser}
절은 Azure AD에 지정된DbUser
값과 일치하는 사용자만 연결하도록 허용합니다.조건 절은 특정 사용자만 임시 자격 증명을 받도록 적용합니다. 이는 회사 이메일 도메인의 이메일 주소로 식별되는 IAM 계정에서 역할 고유 ID
로 지정된 역할을 가진 사용자입니다. 고유 ID에 대한 자세한 내용은 IAM User Guide의 Unique IDs를 참조하세요.AROAJ2UCCR6DPCEXAMPLE
IdP(이 경우 Azure AD) 설정에 따라 조건 절의 작성 방법이 결정됩니다. 직원의 이메일이
johndoe@example.com
인 경우, 먼저${redshift:DbUser}
를 해당 직원의 사용자 이름johndoe
와 일치하는 수퍼 필드로 설정합니다. 그런 다음 AWS SAMLRoleSessionName
필드를 해당 직원의 이메일johndoe@example.com
과 일치하는 수퍼 필드로 설정하여 이 조건을 작동시킵니다. 이 접근 방식을 이용할 때는 다음 사항을 고려하십시오.${redshift:DbUser}
를 직원의 이메일이 되도록 설정한 경우,RoleSessionName
과 일치하도록 JSON 예에서@example.com
을 제거합니다.RoleSessionId
를 직원의 사용자 이름이 되도록 설정한 경우,RoleSessionName
과 일치하도록 예에서@example.com
을 제거합니다.JSON 예제에서
${redshift:DbUser}
및RoleSessionName
모두 직원의 이메일로 설정됩니다. 이 JSON 예에서는 Amazon Redshift 데이터베이스 사용자 이름과@example.com
을 사용해 사용자를 로그인하여 클러스터에 액세스합니다.
두 번째 섹션에서는 지정된 클러스터에
dbuser
이름을 만들 수 있는 권한을 부여합니다. 이 JSON 예에서는 생성을${redshift:DbUser}
로 제한합니다.세 번째 섹션에서는 사용자가 참여할 수 있는
dbgroup
을 지정할 권한을 부여합니다. 이 JSON 예에서는 사용자가 지정된 클러스터의my_dbgroup
그룹에 참여할 수 있습니다.네 번째 섹션에서는 사용자가 모든 리소스에 대해 수행할 수 있는 작업에 대한 권한을 부여합니다. 이 JSON 예에서는 사용자가
redshift:DescribeClusters
를 호출하여 클러스터 엔드포인트, AWS 리전 및 포트와 같은 클러스터 정보를 가져올 수 있도록 합니다. 또한 사용자가iam:ListRoles
를 호출하여 사용자가 맡을 수 있는 역할을 확인할 수 있도록 합니다.
2단계: Azure에 대한 인증을 위해 JDBC 또는 ODBC 설정
문제 해결
브라우저 Azure AD 플러그인 문제를 해결하려면 다음을 고려합니다.
-
브라우저 Azure AD 플러그인을 사용하려면 요청에 지정된 회신 URL을 애플리케이션에 대해 구성된 회신 URL과 일치하도록 설정해야 합니다. Microsoft Azure 포털에서 SAML을 사용하여 SSO(Single Sign-On) 설정 페이지로 이동합니다. 그런 다음 회신 URL이 http://localhost/redshift/로 설정되어 있는지 확인합니다.
-
IdP 테넌트 오류가 발생하면 IdP 테넌트 이름이 Microsoft Azure에서 Active Directory를 설정하는 데 처음 사용한 도메인 이름과 일치하는지 확인합니다.
Windows에서 [Amazon Redshift ODBC DSN 설정(Amazon Redshift ODBC DSN Setup)] 페이지의 [연결 설정(Connection Settings)] 섹션으로 이동합니다. 그런 다음 IdP(Azure)에 구성된 회사의 테넌트 이름이 Microsoft Azure에서 Active Directory를 설정하는 데 처음 사용한 도메인 이름과 일치하는지 확인합니다.
macOS 및 Linux에서 odbc.ini 파일을 찾습니다. 그런 다음 IdP(Azure)에 구성된 회사의 테넌트 이름이 Microsoft Azure에서 Active Directory를 설정하는 데 처음 사용한 도메인 이름과 일치하는지 확인합니다.
-
요청에 지정된 회신 URL이 애플리케이션에 대해 구성된 회신 URL과 일치하지 않는 오류가 발생하는 경우 리디렉션 URI가 회신 URL과 동일한지 확인합니다.
Microsoft Azure 포털에서 애플리케이션의 앱 등록 페이지로 이동합니다. 그런 다음 리디렉션 URI가 응답 URL과 일치하는지 확인합니다.
-
예기치 않은 응답: 무단 오류가 발생하는 경우 모바일 및 데스크톱 애플리케이션 구성을 완료했는지 확인합니다.
Microsoft Azure 포털에서 애플리케이션의 앱 등록 페이지로 이동합니다. 그런 다음 인증으로 이동하여 http://localhost/redshift/를 리디렉션 URI로 사용하도록 모바일 및 데스크톱 애플리케이션을 구성했는지 확인합니다.