자습서: IAM 마스터 사용자 및 Amazon Cognito 인증을 사용하여 도메인 구성 - 아마존 OpenSearch 서비스

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자습서: IAM 마스터 사용자 및 Amazon Cognito 인증을 사용하여 도메인 구성

이 자습서에서는 세분화된 액세스 제어를 위한 인기 있는 Amazon OpenSearch Service 사용 사례, 즉 대시보드용 Amazon Cognito 인증을 사용하는 IAM 마스터 사용자를 다룹니다. OpenSearch

이 자습서에서는 마스터 IAM 역할과 제한된 IAM 역할을 구성한 다음 이를 Amazon Cognito의 사용자와 연결합니다. 그러면 마스터 사용자는 OpenSearch 대시보드에 로그인하여 제한된 사용자를 역할에 매핑하고 세분화된 액세스 제어를 사용하여 사용자의 권한을 제한할 수 있습니다.

이러한 단계는 Amazon Cognito 사용자 풀을 인증에 사용하지만, 동일한 기본 프로세스가 모든 Cognito 인증 공급자에 대해 작동하므로 다양한 사용자에게 다양한 IAM 역할을 할당할 수 있습니다.

이 자습서에서는 다음 단계를 완료합니다.

1단계: 마스터 및 제한된 IAM 역할 생성

AWS Identity and Access Management (IAM) 콘솔로 이동하여 두 개의 개별 역할을 생성합니다.

  • MasterUserRole – 마스터 사용자는 클러스터에 대한 전체 권한을 갖고 역할과 역할 매핑을 관리합니다.

  • LimitedUserRole – 마스터 사용자로서 제한된 액세스 권한을 부여하는 좀 더 제한된 역할입니다.

역할을 생성하기 위한 지침은 사용자 지정 신뢰 정책을 사용하여 역할 생성을 참조하세요.

두 역할 모두 Cognito 자격 증명 풀이 역할을 맡도록 허용하는 다음 신뢰 정책이 있어야 합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Federated": "cognito-identity.amazonaws.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "cognito-identity.amazonaws.com:aud": "{identity-pool-id}" }, "ForAnyValue:StringLike": { "cognito-identity.amazonaws.com:amr": "authenticated" } } }] }
참고

identity-pool-id를 Amazon Cognito 자격 증명 풀의 고유 식별자로 교체하세요. 예를 들어 us-east-1:0c6cdba7-3c3c-443b-a958-fb9feb207aa6입니다.

2단계: Cognito 인증을 사용하여 도메인 생성

Amazon OpenSearch 서비스 콘솔 (https://console.aws.amazon.com/aos/home/) 으로 이동하여 다음 설정을 사용하여 도메인을 생성합니다.

  • OpenSearch 1.0 이상 또는 엘라스틱서치 7.8 이상

  • 공개 액세스(Public access)

  • 마스터 사용자(이전 단계에서 생성)로 MasterUserRole이(가) 활성화된 세분화된 액세스 제어

  • 대시보드에 Amazon Cognito 인증이 활성화되었습니다. OpenSearch Cognito 인증을 활성화하고 사용자 및 ID 풀을 선택하는 방법에 대한 지침은 Amazon Cognito 인증을 사용하도록 도메인 구성 섹션을 참조하세요.

  • 다음 도메인 액세스 정책:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::{account-id}:root" }, "Action": [ "es:ESHttp*" ], "Resource": "arn:aws:es:{region}:{account-id}:domain/{domain-name}/*" } ] }
  • 도메인에 대한 모든 트래픽에 HTTPS 필요

  • 암호화 없음 ode-to-node

  • 저장 데이터의 암호화

3단계: Cognito 사용자 및 그룹 구성

도메인이 생성되는 동안 Amazon Cognito 개발자 안내서사용자 풀 생성에 따라 Amazon Cognito 내에서 마스터 및 제한된 사용자를 구성합니다. 마지막으로 Amazon Cognito에서 자격 증명 풀 생성의 단계에 따라 자격 증명 풀을 구성합니다. 사용자 풀과 자격 증명 풀은 동일한 AWS 리전에 있어야 합니다.

4단계: OpenSearch 대시보드의 역할 매핑

이제 사용자가 구성되었으므로 OpenSearch 대시보드에 마스터 사용자로 로그인하고 사용자를 역할에 매핑할 수 있습니다.

  1. OpenSearch 서비스 콘솔로 돌아가서 생성한 도메인의 OpenSearch 대시보드 URL로 이동합니다. URL은 domain-endpoint/_dashboards/ 형식입니다.

  2. master-user 보안 인증으로 로그인합니다.

  3. Add sample data(샘플 데이터 추가)를 선택하고 샘플 비행 데이터를 추가합니다.

  4. 왼쪽 탐색 창에서 Security(보안), Roles(역할), Create role(역할 생성)을 선택합니다.

  5. 역할 이름을 new-role로 지정합니다.

  6. Index(인덱스)의 경우 opensearch_dashboards_sample_data_fli*(Elasticsearch 도메인의 경우 kibana_sample_data_fli*)를 지정합니다.

  7. Index permissions(인덱스 권한)의 경우 read(읽기)를 선택합니다.

  8. 문서 수준 보안 쿼리(Document Level Security Query)에 다음 쿼리를 지정합니다.

    { "match": { "FlightDelay": true } }
  9. 필드 수준 보안의 경우 제외(Exclude)를 선택하고 FlightNum을 지정합니다.

  10. 익명화(Anonymization)Dest를 지정합니다.

  11. 생성(Create)을 선택합니다.

  12. 매핑된 사용자(Mapped users), 매핑 관리(Manage mapping)를 차례로 선택합니다. LimitedUserRole에 대한 Amazon 리소스 이름(ARN)을 외부 자격 증명으로 추가하고 Map(매핑)을 선택합니다.

  13. 역할 목록으로 돌아가서 opensearch_dashboards_user를 선택합니다. 매핑된 사용자(Mapped users), 매핑 관리(Manage mapping)를 차례로 선택합니다. LimitedUserRole에 대한 ARN을 백엔드 역할로 추가하고 맵(Map)을 선택합니다.

5단계: 권한 테스트

역할이 올바르게 매핑되면 제한된 사용자로 로그인하고 권한을 테스트할 수 있습니다.

  1. 새로운 비공개 브라우저 창에서 도메인의 OpenSearch 대시보드 URL로 이동하고 limited-user 자격 증명을 사용하여 로그인한 다음 Explore on my를 선택합니다.

  2. 개발 도구(Dev Tools)로 이동하여 기본 검색을 실행합니다.

    GET _search { "query": { "match_all": {} } }

    권한 오류를 확인합니다. limited-user에는 클러스터 전체 검색을 실행할 권한이 없습니다.

  3. 또 다른 검색을 실행합니다.

    GET opensearch_dashboards_sample_data_flights/_search { "query": { "match_all": {} } }

    일치하는 모든 문서에 true 값을 갖는 FlightDelay 필드와 익명화된 Dest 필드가 있으며 FlightNum 필드는 없는 것을 확인할 수 있습니다.

  4. master-user로 로그인한 원래 브라우저 창에서 개발 도구(Dev Tools)를 선택한 다음 동일한 검색을 수행합니다. 권한, 결과 수, 일치하는 문서 및 포함된 필드의 차이를 확인합니다.