제퍼넷 로고

VPC 내에서 Amazon OpenSearch Service 도메인에 대한 SAML 자격 증명 연동 구축 | 아마존 웹 서비스

시간

아마존 오픈서치 서비스 Virtual Private Cloud(VPC) 내에서 작동할 수 있는 Apache Lucene 검색 라이브러리를 기반으로 하는 완전 관리형 검색 및 분석 서비스입니다. VPC는 AWS 계정 전용으로 사용되는 가상 네트워크입니다. AWS 클라우드의 다른 가상 네트워크와 논리적으로 격리되어 있습니다. OpenSearch Service 도메인을 VPC 내에 배치하면 인터넷 게이트웨이, NAT 장치 또는 VPN 연결 없이도 OpenSearch Service와 VPC 내의 다른 서비스 간의 보안 통신이 가능해집니다. 모든 트래픽은 AWS 클라우드 내에 안전하게 유지되어 데이터에 안전한 환경을 제공합니다. 프라이빗 VPC 내부에서 실행되는 OpenSearch Service 도메인에 연결하기 위해 기업 고객은 사용 가능한 두 가지 옵션 중 하나를 사용합니다. VPN을 통해 VPC를 기업 네트워크와 통합하거나 AWS Direct Connect, 또는 역방향 프록시를 통해 클러스터 엔드포인트에 공개적으로 액세스할 수 있도록 합니다. 인용하다 Amazon Cognito 인증을 사용하여 VPC 외부에서 OpenSearch 대시보드에 액세스하려면 어떻게 해야 합니까? 사용 가능한 옵션과 해당 장단점을 자세히 평가하려면

기업 고객 환경에서 OpenSearch 대시보드에 대한 액세스를 관리하기 위해 OpenSearch 서비스는 고객의 기존 ID 공급자(IdP)와의 SAML(Security Assertion Markup Language) 통합을 지원하여 SSO(Single Sign-On)를 제공합니다. 공개적으로 액세스 가능한 OpenSearch 대시보드에 대한 SAML 통합은 기본적으로 작동하지만 VPC 내에서 OpenSearch 대시보드에 대해 SAML을 활성화하려면 다양한 구성을 사용하여 신중하게 설계해야 합니다.

이 게시물에서는 VPC에서 실행되는 OpenSearch Service 도메인에 대한 SAML 인증을 통합하기 위한 엔드투엔드 솔루션을 간략하게 설명합니다. 단계별 배포 지침을 제공하며 다음이 함께 제공됩니다. AWS 클라우드 개발 키트 (AWS CDK) 애플리케이션은 필요한 모든 구성을 자동화합니다.

솔루션 개요

다음 다이어그램에서는 SAML ID 페더레이션을 사용하여 SSO를 통해 비공개 OpenSearch Service 도메인에 액세스하기 위한 단계별 인증 흐름을 설명합니다. 액세스는 다음에서 실행되는 개인 NGINX 역방향 프록시 서버를 통해 공용 인터넷을 통해 활성화됩니다. Amazon 탄력적 컨테이너 서비스 (Amazon ECS) 고가용성을 제공합니다.

솔루션 개요

워크플로는 다음 단계로 구성됩니다.

  1. 사용자는 브라우저에서 OpenSearch 대시보드 URL로 이동합니다.
  2. 브라우저는 도메인 IP 주소를 확인하고 요청을 보냅니다.
  3. AWS WAF 규칙은 목록에 나열된 IP 주소 범위만 허용되도록 합니다.
  4. Application Load Balancer는 요청을 NGINX 역방향 프록시로 전달합니다.
  5. NGINX는 필요한 헤더를 추가하고 요청을 OpenSearch 대시보드에 전달합니다.
  6. OpenSearch Dashboards는 요청이 인증되지 않았음을 감지합니다. 인증을 위해 통합 SAML IdP로 리디렉션하여 응답합니다.
  7. 사용자는 SSO 로그인 페이지로 리디렉션됩니다.
  8. IdP는 사용자의 신원을 확인하고 SAML 어설션 토큰을 생성합니다.
  9. 사용자는 OpenSearch 대시보드 URL로 다시 리디렉션됩니다.
  10. 요청은 OpenSearch에 도달할 때까지 1~5단계를 다시 거칩니다. 이번에는 OpenSearch Dashboards가 함께 제공되는 SAML 어설션을 감지하고 요청을 허용합니다.

다음 섹션에서는 프라이빗 서브넷에 NGINX 역방향 프록시를 설정하여 VPC 프라이빗 서브넷 내에 배포된 도메인에 대한 OpenSearch 대시보드에 대한 액세스를 제공합니다. 그런 다음 SAML 2.0 애플리케이션을 사용하여 OpenSearch 대시보드에 대한 SAML 인증을 활성화하고 사용자 지정 도메인 엔드포인트를 사용하여 OpenSearch 대시보드에 액세스하여 SAML 인증이 어떻게 작동하는지 확인합니다.

사전 조건

시작하기 전에 이 섹션의 필수 단계를 완료하세요.

필수 도구 설치

먼저 AWS CDK를 설치합니다. 자세한 내용은 다음을 참조하세요. AWS CDK v2 개발자 가이드.

필수 AWS 리소스 준비

AWS 리소스를 설정하려면 다음 단계를 완료하십시오.

  1. AWS 계정 생성.
  2. 를 생성 아마존 경로 53 다음과 같은 퍼블릭 호스팅 영역 mydomain.com 인터넷 트래픽을 도메인으로 라우팅하는 데 사용됩니다. 지침은 다음을 참조하세요. 퍼블릭 호스팅 영역 생성.
  3. 요청 AWS 인증서 관리자 (ACM) 호스팅 영역에 대한 공개 인증서입니다. 지침은 다음을 참조하세요. 공개 인증서 요청.
  4. 퍼블릭 및 프라이빗 서브넷이 있는 VPC 생성.
  5. 사용 AWS IAM 자격 증명 센터. 지침은 다음을 참조하십시오. IAM ID 센터 활성화.

OpenSearch 서비스 클러스터 준비

이 게시물은 독립형 AWS CDK 애플리케이션(오픈서치 도메인)은 프라이빗 VPC 서브넷에 샘플 OpenSearch Service 도메인을 배포합니다. 배포된 도메인은 데모 목적으로만 사용되며 선택 사항입니다.

SAML 통합에 사용하려는 기존 OpenSearch 서비스 도메인이 VPC에 있는 경우 다음 구성을 적용하십시오.

  1. 클러스터 구성 탭에서 편집 선택 사용자 정의 엔드포인트 활성화 FBI 증오 범죄 보고서 커스텀 엔드포인트 안내
  2. 럭셔리 사용자 지정 호스트 이름, 다음과 같은 FQDN(정규화된 도메인 이름)을 입력하세요. opensearch.mydomain.com, 클러스터에 액세스하는 데 사용하려는 것입니다. 제공된 FQDN의 도메인 이름(예: mydomain.com)은 이전에 생성한 퍼블릭 호스팅 영역과 동일해야 합니다.
  3. 럭셔리 AWS 인증서에서 앞서 생성한 SSL 인증서를 선택하세요.
  4. . 요약 섹션에서 선택적으로 테스트 실행 분석을 활성화하고 선택합니다. 드라이런 또는 선택을 취소하고 선택하세요. 변경 사항을 저장.

그렇지 않으면 함께 제공되는 파일을 다운로드하세요. 오픈서치 도메인 AWS CDK 애플리케이션을 다운로드하고 압축을 풉니다. 그런 다음 cdk.json 압축을 푼 폴더의 루트에 파일을 복사하고 필요한 매개변수를 구성합니다.

  • vpc_cidr – VPC를 생성할 CIDR 블록입니다. 기본값인 10.0.0.0/16을 그대로 둘 수 있습니다.
  • opensearch_cluster_name – OpenSearch 서비스 클러스터의 이름입니다. 기본값을 그대로 둘 수 있습니다. opensearch. 또한 다음과 함께 사용됩니다. hosted_zone_name 매개변수를 사용하여 사용자 정의 도메인 URL의 FQDN을 구축합니다.
  • hosted_zone_id – Route 53 퍼블릭 호스팅 영역 ID.
  • hosted_zone_name – Route 53 퍼블릭 호스팅 영역 이름(예: mydomain.com). 그러면 기본 예제 값을 사용한 결과 FQDN은 다음과 같습니다. opensearch.mydomain.com.

마지막으로 다음 명령을 실행하여 AWS CDK 애플리케이션을 배포합니다.

cd opensearch-domain

# Create a Python environment and install the reuired dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
pip install -r requirements.txt

# Deploy the CDK application
cdk deploy

전제 조건이 갖춰진 경우 이 솔루션을 배포하기 위한 단계별 가이드는 다음 섹션을 참조하세요.

SAML 2.0 애플리케이션 만들기

우리는 SAML 통합을 위한 ID 소스로 IAM ID 센터를 사용합니다. 다른 SAML 2.0 호환 IdP에도 동일한 구성이 적용되어야 합니다. IdP 설명서를 참조하세요.

  1. IAM Identity Center 콘솔에서 다음을 선택합니다. 그룹 탐색 창에서
  2. 라는 새 그룹을 만듭니다. Opensearch Admin을 클릭하고 여기에 사용자를 추가합니다.
    이는 OpenSearch 대시보드에서 전체 권한을 받는 SAML 그룹이 됩니다. 그룹 ID를 기록해 두세요.OpenSearch 관리 그룹
  3. 왼쪽 메뉴에서 어플리케이션 탐색 창에서
  4. 새로운 사용자 정의 SAML 2.0 애플리케이션을 만듭니다.SAML 애플리케이션 생성
  5. 이후 단계에서 사용할 IAM Identity Center SAML 메타데이터 파일을 다운로드합니다.IAM ID 센터 SAML 메타데이터
  6. 럭셔리 애플리케이션 시작 URL, 입력 [Custom Domain URL]/_dashboards/.
    사용자 지정 도메인 URL은 통신 프로토콜(https://)과 전제 조건에서 OpenSearch 서비스 클러스터에 사용한 FQDN(예: https://opensearch.mydomain.com)으로 구성됩니다. 의심스러운 경우 OpenSearch 서비스 클러스터 구성을 살펴보세요.
  7. 럭셔리 애플리케이션 ACS URL, 입력 [Custom Domain URL]/_dashboards/_opendistro/_security/saml/acs.
  8. 럭셔리 애플리케이션 SAML 대상, 입력 [Custom Domain URL] (후행 슬래시 없음)
    OpenSearch 도메인 SAML 속성
  9. 왼쪽 메뉴에서 문의하기.
  10. . 할당된 사용자 섹션에서 선택 오픈서치 관리자 선택하고 사용자 할당.SAML 애플리케이션에 관리 그룹 할당
  11. 행위 메뉴, 선택 속성 매핑 편집.SAML 애플리케이션의 속성 매핑 편집
  12. 다음 스크린샷에 표시된 대로 속성 매핑을 정의하고 변경 사항을 저장.SAML 애플리케이션의 속성 매핑 구성

AWS CDK 애플리케이션 배포

AWS CDK 애플리케이션을 배포하려면 다음 단계를 완료하십시오.

  1. 다운로드 및 압축 해제 opensearch-도메인-saml-통합 AWS CDK 애플리케이션.
  2. 개인 SSL 키와 인증서를 다음에 추가하세요. AWS 비밀 관리자두 개의 비밀을 만들어라 라는 KeyCrt. 예를 들어 다음 코드를 참조하십시오.
    KEY=$(cat private.key | base64) && aws secretsmanager create-secret --name Key --secret-string $KEY
    CRT=$(cat certificate.crt | base64) && aws secretsmanager create-secret --name Crt --secret-string $CRT

    다음 명령을 사용하여 자체 서명된 인증서를 생성할 수 있습니다. 이는 테스트용으로만 사용됩니다. 프로덕션 환경에서는 이를 사용하지 마십시오.

    openssl req -new -newkey rsa:4096 -days 1095 -nodes -x509 -subj '/' -keyout private.key -out certificate.crt

  3. 편집 cdk.json 파일을 만들고 중첩된 내부에 필수 매개변수를 설정합니다. config 목적:
  • aws_지역 – 배포할 대상 AWS 지역(예: eu-central-1).
  • vpc_id – OpenSearch 서비스 도메인이 배포된 VPC의 ID입니다.
  • opensearch_cluster_security_group_id – OpenSearch Service 도메인 또는 포트 80 및 443에서 해당 도메인에 대한 인바운드 연결을 허용하는 기타 보안 그룹에서 사용하는 보안 그룹의 ID. 이 그룹 ID는 Application Load Balancer에서 OpenSearch Service 도메인으로 트래픽을 전달하는 데 사용됩니다. .
  • hosted_zone_id – Route 53 퍼블릭 호스팅 영역 ID.
  • hosted_zone – Route 53 퍼블릭 호스팅 영역 이름(예: mydomain.com).
  • opensearch_custom_domain_name – 다음과 같은 FQDN opensearch.mydomain.com, 클러스터에 액세스하는 데 사용하려는 것입니다. 제공된 FQDN의 도메인 이름(mydomain.com)는 다음과 같아야 합니다. hosted_zone 매개 변수입니다.
  • opensearch_custom_domain_certificate_arn – ACM에 저장된 인증서의 ARN입니다.
  • opensearch_domain_endpoint – OpenSearch 서비스 VPC 도메인 엔드포인트(예: vpc-opensearch-abc123.eu-central-1.es.amazonaws.com).
  • vpc_dns_resolver – 10.0.0이어야 합니다. VPC CIDR이 10.0.0.0/16인 경우. 보다 아마존 DNS 서버 자세한 내용은.
  • alb_waf_ip_whitelist_cidrs – 이는 OpenSearch Service 도메인에 대한 액세스를 허용하기 위해 AWS WAF에 자동으로 나열되는 0개 이상의 IP CIDR 범위의 선택적 목록입니다. 지정하지 않은 경우 배포 후 액세스를 허용하려면 AWS WAF IP 세트에 관련 IP CIDR 범위를 수동으로 추가해야 합니다. 예를 들어, ["1.2.3.4/32", "5.6.7.0/24"].
  1. OpenSearch 서비스 도메인 SAML 통합 AWS CDK 애플리케이션을 배포합니다.
    cd opensearch-domain-saml-integration
    
    # Create a Python environment and install the required dependencies
    python3 -m venv .venv
    source .venv/bin/activate
    pip install -r requirements-dev.txt
    pip install -r requirements.txt
    
    # Deploy the CDK application
    cdk deploy

OpenSearch Service 클러스터에 대해 SAML 인증을 활성화합니다.

애플리케이션 배포가 완료되면 클러스터에 대해 SAML 인증을 활성화합니다.

  1. OpenSearch Service 콘솔에서 도메인으로 이동합니다.
  2. 보안 구성 탭에서 편집.OpenSearch 도메인에 대한 SAML 인증 활성화
  3. 선택 SAML 인증 활성화.
  4. 왼쪽 메뉴에서 XML 파일에서 가져오기 이전 단계에서 다운로드한 IAM Identity Center SAML 메타데이터 파일을 가져옵니다.
  5. 럭셔리 SAML 마스터 백엔드 역할, 앞서 저장한 그룹 ID를 사용하세요.
  6. 확장 추가 세팅 섹션 및 역할, 이전에 AWS Identity Center에서 SAML 2.0 애플리케이션을 생성할 때 매핑한 SAML 2.0 속성 이름을 입력합니다.
  7. 도메인 액세스 정책 구성 SAML 통합을 위해.
  8. 다음 섹션으로 진행하기 전에 변경 사항을 제출하고 OpenSearch 서비스가 구성을 적용할 때까지 기다립니다.

솔루션 테스트

솔루션이 실제로 작동하는 모습을 보려면 다음 단계를 완료하세요.

  1. IAM Identity Center 콘솔에서 다음을 선택합니다. 대시보드 탐색 창에서
  2. . 설정 요약 섹션에서 아래 링크를 선택하세요. AWS 액세스 포털 URL.IAM ID 센터에 로그인
  3. 사용자 이름과 비밀번호로 로그인하세요(처음 로그인하는 경우 비밀번호를 등록하세요).
    계정이 관리자 그룹에 성공적으로 추가되면 SAML 애플리케이션 로고가 표시됩니다.
  4. 왼쪽 메뉴에서 맞춤형 SAML 2.0 애플리케이션 추가 로그인 시도 없이 SSO를 통해 OpenSearch 서비스 대시보드로 리디렉션됩니다.SAML 애플리케이션 열기
    또는 액세스 포털 로그인을 건너뛰고 브라우저에서 OpenSearch Dashboards URL을 직접 지정할 수도 있습니다. 이 경우 OpenSearch 대시보드는 먼저 로그인을 위해 액세스 포털로 리디렉션합니다. 그러면 로그인에 성공한 후 다시 OpenSearch 대시보드 UI로 리디렉션되어 다음 스크린샷에 표시된 것과 동일한 결과가 나타납니다.로그인 성공 후 OpenSearch 대시보드 UI

문제해결

공개 IP는 AWS WAF 규칙에 따라 허용 목록에 포함되어야 합니다. 그렇지 않으면 403 Forbidden 오류가 반환됩니다. AWS CDK를 통해 IP CIDR 범위를 나열하도록 허용 alb_waf_ip_whitelist_cidrs 설치 안내서에 설명된 대로 속성을 삭제하고 AWS CDK 애플리케이션을 다시 배포하여 변경 사항을 적용합니다.

정리

이 구성을 마치면 향후 비용이 청구되지 않도록 리소스를 정리하세요.

  1. OpenSearch 서비스 콘솔에서 다음으로 이동합니다. 보안 구성 OpenSearch Service 도메인 탭을 선택하고 편집.
  2. 선택 취소 SAML 인증 활성화 선택하고 변경 사항을 저장.
  3. Amazon SAML 통합이 비활성화된 후 opensearch-domain-saml-integration 스택을 사용하여 cdk destroy.
  4. 선택적으로 제공된 OpenSearch 서비스 샘플 AWS CDK 스택(opensearch-domain), 다음을 사용하여 삭제하세요. cdk destroy.

결론

OpenSearch 서비스를 사용하면 기업 고객은 AWS 모범 사례에 따라 프라이빗 VPC 서브넷 내에서 실행되는 클러스터에 대해 IAM Identity Center를 사용하여 SAML과 같은 선호하는 통합 IdP를 사용할 수 있습니다.

이 게시물에서는 IAM Identity Center를 사용하여 OpenSearch 대시보드에 대한 SSO 액세스를 위해 VPC 내의 OpenSearch 서비스 도메인을 기존 SAML IdP와 통합하는 방법을 보여주었습니다. 제공된 솔루션은 AWS WAF를 사용하여 리소스에 대한 네트워크 액세스를 안전하게 관리하여 승인된 네트워크 세그먼트 또는 특정 IP 주소에만 액세스하도록 제한합니다.

시작하려면 다음을 참조하십시오. Amazon Cognito 인증을 사용하여 VPC 외부에서 OpenSearch 대시보드에 액세스하려면 어떻게 해야 합니까? 프라이빗 VPC 액세스 패턴에서 OpenSearch 서비스 도메인을 추가로 비교합니다.


저자에 관하여

마흐디 에브라히미 Amazon Web Services의 수석 클라우드 인프라 설계자입니다. 그는 분산형, 고가용성 소프트웨어 시스템 설계에 탁월합니다. Mahdi는 고객이 빠르게 진화하는 자동차 산업 환경에서 혁신을 이룰 수 있도록 지원하는 최첨단 솔루션을 제공하는 데 전념하고 있습니다.

드미트로 프로트시브 Amazon Web Services를 위한 클라우드 애플리케이션 설계자입니다. 그는 고객이 애플리케이션 현대화와 관련된 비즈니스 과제를 해결할 수 있도록 돕는 데 열정을 쏟고 있습니다.

루카 메니체티 Amazon Web Services의 빅 데이터 설계자입니다. 그는 고객이 대규모 데이터를 처리하기 위해 성능이 뛰어나고 재사용 가능한 솔루션을 개발하도록 돕습니다. Luca는 조직의 데이터 아키텍처를 관리하고 데이터 분석 및 기계 학습을 지원하는 데 열정을 갖고 있습니다. 10년 동안 Hadoop 생태계 주변에서 일한 그는 NoSQL 환경의 문제를 해결하는 것을 정말 즐깁니다.

크리티바산 발라수브라마니얀 Amazon Web Services의 수석 컨설턴트입니다. 그는 디지털 혁신 여정에서 글로벌 기업 고객을 지원하고 클라우드 네이티브 솔루션 설계를 돕습니다.

무투 피차이마니 Amazon OpenSearch Service의 검색 전문가입니다. 그는 대규모 검색 애플리케이션 및 솔루션을 구축합니다. Muthu는 네트워킹 및 보안 주제에 관심이 있으며 텍사스 오스틴에 기반을 두고 있습니다.

spot_img

최신 인텔리전스

spot_img