AWS Identity and Access Management를 사용하여 SAML 페더레이션 활성화
OpenSearch UI는 많은 ID 공급자가 사용하는 개방형 표준인 Security Assertion Markup Language 2.0(SAML)을 지원합니다. 이렇게 하면 AWS Identity and Access Management(IAM)와의 ID 페더레이션이 활성화됩니다. 이 지원을 통해 계정 또는 조직의 사용자는 IAM 역할을 맡아 OpenSearch UI에 직접 액세스할 수 있습니다. 최종 사용자를 위한 ID 공급자(IdP) 시작 Single Sign-On 환경을 생성할 수 있습니다. 여기서 최종 사용자는 외부 ID 공급자에서 인증하고 OpenSearch UI의 정의된 페이지로 직접 라우팅될 수 있습니다. OpenSearch UI 및 관련 데이터 소스에 액세스할 수 있는 권한이 서로 다른 다양한 IAM 역할을 맡도록 최종 사용자 또는 그룹을 구성하여 세분화된 액세스 제어를 구현할 수도 있습니다.
이 주제에서는 OpenSearch UI에서 SAML 사용을 구성하기 위한 단계별 지침을 제공합니다. 이 절차에서는 Okta 자격 증명 및 액세스 관리 애플리케이션을 구성하는 단계를 예로 사용합니다. Azure Active Directory, Ping 등, 다른 ID 공급자의 구성 단계는 비슷합니다.
주제
1단계: ID 공급자 애플리케이션 설정(Okta)
OpenSearch UI에서 SAML을 사용하기 위한 첫 번째 단계는 ID 공급자를 설정하는 것입니다.
작업 1: Okta 사용자 생성
-
관리 권한이 있는 사용자로 https://login.okta.com/
Okta 조직에 로그인합니다. -
관리자 콘솔의 탐색 창에 있는 디렉터리에서 사람을 선택합니다.
-
사람 추가(Add Person)를 선택합니다.
-
이름에 사용자의 이름을 입력합니다.
-
성에 사용자의 성을 입력합니다.
-
사용자 이름에 이메일 형식으로 사용자의 사용자 이름을 입력합니다.
-
암호를 설정합니다를 선택하고 암호를 입력합니다..
-
(선택 사항) 사용자가 처음 로그인할 때 암호를 변경하지 않도록 하려면 사용자가 처음 로그인할 때 암호를 변경해야 함 상자를 선택 취소합니다.
-
저장을 선택합니다.
작업 2: 그룹 생성 및 할당
-
관리 권한이 있는 사용자로 https://login.okta.com/
Okta 조직에 로그인합니다. -
관리자 콘솔의 탐색 창에 있는 디렉터리에서 그룹을 선택합니다.
-
그룹 추가를 선택합니다.
-
그룹 이름을 입력하고 저장을 선택합니다.
-
새로 생성된 그룹을 선택한 다음 사용자 할당을 선택합니다.
-
더하기 기호(+)를 선택한 다음 완료를 선택합니다.
-
(선택 사항) 1~6단계를 반복하여 그룹을 더 추가합니다.
작업 3: Okta 애플리케이션 생성
-
관리 권한이 있는 사용자로 https://login.okta.com/
Okta 조직에 로그인합니다. -
관리자 콘솔의 탐색 창에 있는 애플리케이션에서 애플리케이션을 선택합니다.
-
앱 통합 생성(Create App Integration)을 선택합니다.
-
로그인 방법으로 SAML 2.0을 선택한 후 다음을 선택합니다.
-
앱 통합의 이름(예:
OpenSearch_UI)을 입력한 후 다음을 선택합니다. -
앱에 다음 값을 입력합니다. 다른 값은 변경할 필요가 없습니다.
-
1. Single Sign On URL에 상용 AWS 리전의
https://signin.aws.amazon.com/saml, 또는 리전에 해당하는 URL을 입력합니다. -
2. 대상 URI(SP 엔터티 ID)에
urn:amazon:webservices를 입력합니다. -
3. 이름 ID 형식에
EmailAddress를 입력합니다.
-
-
다음을 선택합니다.
-
내부 앱을 추가하는 Okta 고객임을 선택한 다음 생성한 내부 앱입니다를 선택합니다.
-
마침을 클릭합니다.
-
할당을 선택한 다음 할당을 선택합니다.
-
그룹에 할당을 선택한 다음 추가하려는 그룹 옆에 있는 할당을 선택합니다.
-
완료를 선택합니다.
작업 4: Okta 고급 구성 설정
사용자 지정 SAML 애플리케이션을 생성한 후 다음 단계를 완료합니다.
-
관리 권한이 있는 사용자로 https://login.okta.com/
Okta 조직에 로그인합니다. 관리자 콘솔의 일반 영역에 있는 SAML 설정에서 편집을 선택합니다.
-
다음을 선택합니다.
-
다음 형식을 사용하여 기본 릴레이 상태를 OpenSearch UI 엔드포인트로 설정합니다.
https://.region.console.aws.amazon.com/aos/home?region=region#opensearch/applications/application-id/redirectToDashboardURL다음은 예제입니다.
https://us-east-2.console.aws.amazon.com/aos/home?region=us-east-2#opensearch/applications/abc123def4567EXAMPLE/redirectToDashboardURL -
속성 문(선택 사항)에 다음 속성을 추가합니다.
-
역할 속성을 사용하여 IAM 역할 및 ID 공급자를 쉼표로 구분된 형식으로 제공합니다. 이후 단계에서 AWS 구성을 설정할 때 동일한 IAM 역할 및 ID 공급자를 사용합니다.
-
RoleSessionName의 user.login을 설정합니다. 이는 역할을 맡을 때 발급되는 임시 자격 증명의 식별자로 사용됩니다.
참조용:
명칭 이름 형식 형식 예시 https://aws.amazon.com/SAML/Attributes/Role지정 안 함
arn:aws:iam::aws-account-id:role/role-name,arn:aws:iam::aws-account-id:saml-provider/provider-namearn:aws:iam::111222333444:role/oktarole,arn:aws:iam::111222333444:saml-provider/oktaidphttps://aws.amazon.com/SAML/Attributes/RoleSessionName지정 안 함
user.loginuser.login -
-
속성을 추가하고 다음을 선택한 후 완료를 선택합니다.
속성은 다음 이미지에 표시된 것과 비슷한 형식이어야 합니다. 기본 릴레이 상태 값은 Okta에서 Single Sign-On 검증을 완료한 후 계정 또는 조직의 최종 사용자를 위한 랜딩 페이지를 정의하는 URL입니다. OpenSearch UI의 모든 페이지로 설정한 다음 해당 URL을 의도한 최종 사용자에게 제공할 수 있습니다.
2단계: Okta의 AWS 구성 설정
다음 작업을 완료하여 Okta의 AWS 구성을 설정합니다.
작업 1: Okta 정보 수집
이 단계에서는 나중에 AWS에서 구성할 수 있도록 Okta 정보를 수집해야 합니다.
-
관리 권한이 있는 사용자로 https://login.okta.com/
Okta 조직에 로그인합니다. -
로그인 탭의 페이지 오른쪽 하단에서 SAML 설정 지침 보기를 선택합니다.
-
ID 공급자 Single Sign-On의 값을 기록해 둡니다. SQL Workbench/J
와 같은 서드 파티 SQL 클라이언트에 연결할 때 이 URL을 사용할 수 있습니다. -
블록 4에서 ID 공급자 메타데이터를 사용한 다음 메타데이터 파일을 .xml 형식(예:
metadata.xml)으로 저장합니다.
작업 2: IAM 공급자 생성
IAM 공급자를 생성하려면 다음 단계를 완료합니다.
AWS Management 콘솔에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창의 액세스 관리에서 ID 공급자를 선택합니다.
-
공급자 추가를 선택합니다.
-
공급자 유형에서 SAML을 선택합니다.
-
공급자 이름에 이름을 입력합니다.
-
메타데이터 문서에서 파일 선택을 선택하고 이전에 다운로드한 메타데이터 파일(.xml)을 업로드합니다.
-
공급자 추가를 선택합니다.
작업 3: IAM 역할 생성
AWS Identity and Access Management 역할을 생성하려면 다음 단계를 완료합니다.
AWS Management 콘솔에 로그인하여 https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창의 액세스 관리에서 역할을 선택합니다.
-
역할 생성을 선택합니다.
-
신뢰할 수 있는 엔티티 유형에서 SAML 2.0 페더레이션을 선택합니다.
-
SAML 2.0 기반 공급자의 경우 앞서 생성한 ID 공급자를 선택합니다.
-
Allow programmatic and AWS Management 콘솔 access를 선택합니다.
-
다음을 선택합니다.
-
권한 정책 목록에서 앞서 생성한 정책의 확인란과 OpenSearchFullAccess의 확인란을 선택합니다.
-
다음을 선택합니다.
-
검토 영역에서 역할 이름에 역할의 이름을 입력합니다(예:
oktarole). -
(선택 사항) 설명에 역할의 용도에 대한 간략한 설명을 입력합니다.
-
역할 생성을 선택합니다.
-
방금 생성한 역할로 이동하여 신뢰 관계 탭을 선택한 다음 신뢰 정책 편집을 선택합니다.
-
문 편집 창의 STS에 대한 작업 추가에서 TagSession의 확인란을 선택합니다.
-
정책 업데이트를 선택합니다.
3단계: IAM에서 Amazon OpenSearch Service 액세스 정책 생성
OpenSearch 액세스 제어를 위해 IAM 역할을 구성하는 방법을 알아봅니다. IAM 역할을 사용하면 Okta 사용자 그룹이 OpenSearch 리소스에 액세스할 수 있도록 세분화된 액세스 제어를 구현할 수 있습니다. 이 주제에서는 2개의 예시 그룹을 사용하는 IAM 역할 기반 구성을 보여줍니다.
다음 예와 같이 백엔드 역할 매핑을 사용하여 Amazon OpenSearch Service 도메인 역할을 IAM 역할에 매핑할 수 있습니다.
{ "bob-group": { "hosts": [], "users": [], "reserved": false, "hidden": false, "backend_roles": [ "arn:aws:iam::111222333444:role/bob-group" ], "and_backend_roles": [] }, "alice-group": { "hosts": [], "users": [], "reserved": false, "hidden": false, "backend_roles": [ "arn:aws:iam::111222333444:role/alice-group" ], "and_backend_roles": [] } }
4단계: SAML을 사용하여 ID 공급자가 시작한 Single Sign-On 환경 확인
기본 릴레이 상태의 URL을 열어 Okta 인증 페이지를 엽니다. 최종 사용자의 자격 증명을 입력합니다. 자동으로 OpenSearch UI로 리디렉션됩니다.
다음 이미지와 같이 탐색 창 하단의 사용자 아이콘을 선택하여 현재 자격 증명을 확인할 수 있습니다.
탐색 패널 하단의 개발자 도구에 액세스하고 콘솔에서 쿼리를 실행하여 사용자의 세분화된 액세스 제어 권한을 확인할 수도 있습니다. 다음은 샘플 쿼리입니다.
5단계: SAML 속성 기반 세분화된 액세스 제어 구성
Amazon OpenSearch Service에서는 SAML과 함께 세분화된 액세스 제어를 사용하여 ID 공급자의 사용자 및 그룹을 OpenSearch 세분화된 액세스 제어 사용자 및 역할에 동적으로 매핑할 수 있습니다. 이러한 역할의 범위를 특정 OpenSearch 도메인 및 서버리스 컬렉션으로 지정하고 인덱스 수준 권한 및 문서 수준 보안을 정의할 수 있습니다.
참고
세분화된 액세스 제어에 대한 자세한 내용은 Amazon OpenSearch Service에서 세분화된 액세스 제어 섹션을 참조하세요.
주제
세분화된 액세스 제어를 위한 SAML 속성
- subjectKey
-
인증할 사용자를 식별하는 이메일, 사용자 이름 등의 고유한 사용자 속성에 매핑됩니다.
- rolesKey
-
권한 부여를 위한 역할 또는 권한을 결정하는 IdP의 그룹 또는 역할 속성에 매핑됩니다.
작업 1: 세분화된 액세스 제어를 위한 Okta 구성
세분화된 액세스 제어를 위한 Okta를 구성하려면
-
속성 문 섹션에서 OpenSearch 사용자 보안 위탁자에 대한 새 속성을 추가합니다.
-
이름:
UserName -
값:
${user-email}
이 속성은 인증을 위한 OpenSearch 세분화된 액세스 제어 구성에서 제목 키로 사용됩니다.
-
-
그룹 속성 문 섹션에서 역할의 그룹 속성을 추가합니다.
-
이름:
groups -
필터:
OpenSearch_xxx
이 속성은 권한 부여를 위해 그룹을 OpenSearch 세분화된 액세스 제어 역할에 매핑하기 위한 역할 키로 사용됩니다.
-
작업 2: OpenSearch 도메인에서 SAML 구성
OpenSearch 도메인에서 SAML을 구성하려면
-
AWS Management Console에서 OpenSearch UI 사용자에 대해 세분화된 액세스 제어를 활성화하려는 OpenSearch Service 도메인을 식별합니다.
-
특정 도메인의 세부 정보 페이지로 이동합니다.
-
보안 구성 탭을 선택하고 편집을 클릭합니다.
-
IAM 페더레이션을 통한 SAML을 확장합니다.
-
Okta에서 정의한
subjectKey와roleKey를 입력합니다. -
변경 내용 저장을 선택합니다.
AWS CLI를 사용하여 세분화된 액세스 제어를 구성할 수도 있습니다.
aws opensearch create-domain \ --domain-name testDomain \ --engine-version OpenSearch_1.3 \ --cluster-config InstanceType=r5.xlarge.search,InstanceCount=1,DedicatedMasterEnabled=false,ZoneAwarenessEnabled=false,WarmEnabled=false \ --access-policies '{"Version": "2012-10-17", "Statement":[{"Effect":"Allow","Principal":{"AWS":"*"},"Action":"es:*","Resource":"arn:aws:es:us-east-1:12345678901:domain/neosaml10/*"}]}' \ --domain-endpoint-options '{"EnforceHTTPS":true,"TLSSecurityPolicy":"Policy-Min-TLS-1-2-2019-07"}' \ --node-to-node-encryption-options '{"Enabled":true}' \ --encryption-at-rest-options '{"Enabled":true}' \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \ --ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \ --no-verify-ssl \ --endpoint-url https://es.us-east-1.amazonaws.com \ --region us-east-1
기존 도메인을 업데이트하려면:
aws opensearch update-domain-config \ --domain-name testDomain \ --advanced-security-options '{"Enabled":true,"InternalUserDatabaseEnabled":true,"MasterUserOptions":{"MasterUserName":"********","MasterUserPassword":"********"}, "IAMFederationOptions":{"Enabled": true,"SubjectKey":"TestSubjectKey","RolesKey":"TestRolesKey"}}' \ --ebs-options "EBSEnabled=true,VolumeType=gp2,VolumeSize=300" \ --no-verify-ssl \ --endpoint-url https://es.us-east-1.amazonaws.com \ --region us-east-1
작업 3: OpenSearch Serverless 컬렉션에서 SAML 구성
OpenSearch Serverless에서 SAML 기반 세분화된 액세스 제어를 구성하려면
-
AWS Management 콘솔을 열고 Amazon OpenSearch Service로 이동합니다.
-
탐색 창의 서버리스에서 보안을 선택한 다음 인증을 선택합니다.
-
IAM 페더레이션 섹션에서 편집을 선택합니다.
이 구성을 사용하여 SAML 속성 기반 세분화된 액세스 제어를 제어할 수 있습니다. IAM 페더레이션은 기본적으로 비활성화되어 있습니다.
-
IAM 페더레이션 활성화를 선택합니다.
-
Okta에서 정의한
subjectKey및roleKey값을 입력합니다.자세한 내용은 세분화된 액세스 제어를 위한 SAML 속성 섹션을 참조하세요.
-
저장을 선택합니다.
-
탐색 창의 서버리스에서 데이터 액세스 정책을 선택합니다.
-
기존 정책을 업데이트하거나 새 정책을 생성합니다.
-
규칙을 확장하고 위탁자 추가를 선택한 다음 IAM 페더레이션 사용자 및 그룹을 선택합니다.
-
필요한 위탁자를 추가하고 저장을 선택합니다.
-
권한 부여를 선택합니다.
-
이 규칙에서 다음을 수행합니다.
-
선택한 위탁자에 대해 정의할 권한을 선택합니다.
-
권한을 적용할 컬렉션을 지정합니다.
-
인덱스 수준 권한을 정의합니다(선택 사항).
참고
여러 규칙을 생성하여 여러 위탁자 그룹에 서로 다른 권한을 할당할 수도 있습니다.
-
-
완료하였으면 저장을 선택합니다.
-
생성(Create)을 선택합니다.
또는 CLI를 사용하여 아래와 같이 컬렉션에 대한 보안 구성을 생성할 수 있습니다.
aws opensearchserverless create-security-config --region "region" --type iamfederation --name "configuration_name" --description "description" --iam-federation-options '{"groupAttribute":"GroupKey","userAttribute":"UserKey"}'