Amazon Cognito 인증으로 VPC 외부에서 OpenSearch Dashboards에 액세스하기 위해 SSH 터널을 사용하려면 어떻게 해야 하나요?

5분 분량
0

내 Amazon OpenSearch Service 클러스터는 Virtual Private Cloud(VPC)에서 실행됩니다. Amazon Cognito 인증으로 VPC 외부에서 OpenSearch 대시보드에 액세스하기 위해 SSH 터널을 사용하려고 합니다.

간략한 설명

기본적으로 Amazon Cognito는 VPC에서 AWS Identity and Access Management(IAM) 사용자에 대한 OpenSearch Dashboards 액세스를 제한합니다. OpenSearch Service 관리형 VPC 엔드포인트(AWS PrivateLink 제공)를 설정하여 다른 VPC에서 Amazon OpenSearch Service 도메인에 액세스합니다. SSH 터널을 사용하여 VPC 외부에서 OpenSearch Dashboards에 액세스할 수도 있습니다.

중요: VPC 외부에서 OpenSearch Dashboards에 액세스할 때 조직의 보안 요구 사항을 준수하는지 확인하세요.

SSH 터널을 사용하여 VPC 외부에서 대시보드에 액세스합니다.

1.    Amazon Cognito 사용자 풀과 자격 증명 풀을 생성합니다.

2.    퍼블릭 서브넷에서 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 생성합니다. 이 서브넷은 OpenSearch Service 도메인과 동일한 VPC에 있어야 합니다.

3.    FoxyProxy와 같은 브라우저 추가 기능을 사용하여 SOCKS 프록시를 구성합니다.

4.    로컬 시스템에서 EC2 인스턴스까지 SSH 터널을 생성합니다.

참고: 또한 Amazon Cognito 인증으로 VPC 외부에서 대시보드에 액세스하기 위해 NGINX 프록시나 Client VPN도 사용할 수 있습니다. 자세한 내용은 Amazon Cognito 인증으로 VPC 외부에서 OpenSearch 대시보드에 액세스하려면 어떻게 해야 합니까?를 참조하세요.

5.    (선택 사항) 세분화된 액세스 제어(FGAC)가 활성화되었을 경우 Amazon Cognito의 인증된 역할 추가

해결 방법

Amazon Cognito 사용자 풀 및 자격 증명 풀 생성

1.    Amazon Cognito 사용자 풀을 생성합니다.

2.    호스팅된 사용자 풀 도메인을 구성합니다.

3.    Amazon Cognito 콘솔 탐색 창에서 [Users and groups]를 선택합니다.

4.    [Create user]를 선택한 다음 필드를 입력합니다. 이메일 주소를 입력했는지 확인합니다. 그런 다음 [Mark email as verified] 확인란을 선택합니다.

5.    [Groups] 탭을 선택한 후 [Create group]을 선택합니다. [Precedence]에 0을 입력합니다. 자세한 내용은 AWS Management Console에서 새 그룹 생성을 참조하세요.

6.    Amazon Cognito 콘솔을 다시 엽니다.

7.    [Manage Identity Pools]를 선택한 후 [Create new identity pool]을 선택합니다.

8.    자격 증명 풀의 이름을 입력하고 인증되지 않은 자격 증명에 대한 액세스 활성화(Enable access to unauthenticated identities) 확인란을 선택합니다. 그런 다음, **풀 생성(Create Pool)**을 선택합니다.

9.    AWS 리소스에 액세스하라는 메시지가 표시되면 **허용(Allow)**을 선택합니다. 이렇게 하면 자격 증명 풀과 연결된 두 가지 기본 역할(인증되지 않은 사용자용과 인증된 사용자용)이 생성됩니다.

10.    OpenSearch 대시보드에 Amazon Cognito 인증을 사용하도록 OpenSearch Service 도메인을 구성합니다.
[Cognito 사용자 풀(Cognito User Pool)]에는 1단계에서 생성한 사용자 풀을 선택합니다.
[Cognito Identity Pool]에는 8단계에서 생성한 자격 증명 풀을 선택합니다.

11.    다음과 같이 액세스 정책에 사용할 OpenSearch Service 도메인을 구성합니다. 다음 값을 바꿉니다.
account-id: AWS 계정 ID
identity-name: Amazon Cognito 자격 증명 풀 이름
domain-name: 도메인 이름
리전: us-east-1과 같이 도메인이 상주하는 리전

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::account-id:assumed-role/Cognito_identity-nameAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:Region:account-id:domain/domain-name/*"
    }
  ]
}

예를 들어, 다음과 같은 액세스 정책은 해당 값을 사용합니다.

AWS 계정 ID: 111122223333
Amazon Cognito 자격 증명 풀 이름: MyIdentityPool
도메인 이름: MyDomain
리전: us-east-1

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:sts::111122223333:assumed-role/Cognito_MyIdentityPoolAuth_Role/CognitoIdentityCredentials"
      },
      "Action": "es:*",
      "Resource": "arn:aws:es:us-east-1:111122223333:domain/MyDomain/*"
    }
  ]
}

EC2 인스턴스 생성 및 보안 그룹 규칙 구성

1.    OpenSearch Service 도메인이 있는 VPC의 퍼블릭 서브넷에서 EC2 인스턴스를 시작합니다. 인스턴스 세부 정보 구성 페이지에서 퍼블릭 IP 자동 할당활성으로 설정되어 있는지 확인합니다.
참고: 다음 단계에서는 EC2 인스턴스를 tunnel_ec2라고 합니다.

2.    tunnel_ec2 인스턴스와 연결된 보안 그룹에 인바운드 규칙을 추가합니다. 이러한 규칙은 OpenSearch Service 대시보드에서 액세스하는 시스템의 IP 주소에서 포트 8157 및 22에 대한 트래픽을 허용해야 합니다.

3.    OpenSearch Service 도메인과 연결된 보안 그룹에 인바운드 규칙을 추가합니다. 이 규칙은 tunnel_ec2 인스턴스의 프라이빗 IP 주소에 대한 트래픽을 허용해야 합니다.

SOCKS 프록시 구성

1.    Google Chrome에 FoxyProxy Standard를 추가합니다.

2.    FoxyProxy를 연 다음 [Options]를 선택합니다.

3.    [프록시 모드(Proxy mode)] 드롭다운 목록에서 [사전 정의된 패턴 및 우선 순위에 따라 프록시 사용(Use proxies based on their pre-defined patterns and priorities)]을 선택합니다.

4.    [Add New Proxy]를 선택합니다.

5.    일반(General) 탭을 선택하고 "Dashboards Proxy"와 같은 **프록시 이름(Proxy Name)**을 입력합니다.

6.    [프록시 세부 정보(Proxy Details)] 탭에서 [수동 프록시 구성(Manual Proxy Configuration)]이 선택되었는지 확인하고 다음 필드에 값을 입력합니다.
[호스트 또는 IP 주소(Host or IP Address)]에 localhost를 입력합니다.
[Port]에 8157을 입력합니다.
[SOCKS proxy]를 선택합니다.
[SOCKS v5]를 선택합니다.

7.    [URL 패턴(URL Patterns)] 탭을 선택합니다.

8.    **새 패턴 추가(Add new pattern)**를 선택하고 다음 필드를 입력합니다.
**패턴 이름(Pattern Name)**에 "VPC 엔드포인트(VPC Endpoint)"와 같은 이름을 입력합니다.
**URL 패턴(URL pattern)**에서 대시보드에 대한 VPC 엔드포인트를 입력합니다. URL 액세스가 허용되는지 확인하십시오. 와일드 카드가 선택되었는지 확인합니다.

9.     저장을 선택합니다.

SSH 터널 생성

1.    Dashboards 대시보드에 액세스하는 데 사용할 로컬 컴퓨터에서 이 명령을 실행합니다. 다음 항목을 교체하세요.
mykeypair.pem: tunnel_ec2 EC2 인스턴스를 시작할 때 지정한 키 페어에 대한 .pem 파일 이름.
public_dns_name: tunnel_ec2 EC2 인스턴스의 퍼블릭 DNS. 자세한 내용은 EC2 인스턴스의 DNS 호스트 이름 보기를 참조하세요.

ssh -i "mykeypair.pem"  ec2-user@public_dns_name -ND 8157

2.    브라우저에서 대시보드 엔드포인트를 입력합니다. Dashboards에 대한 Amazon Cognito 로그인 페이지가 나타납니다.

(선택 사항) FGAC가 활성화되었을 경우 Amazon Cognito의 인증된 역할 추가

세분화된 액세스 제어(FGAC)가 OpenSearch Service 클러스터에 활성화되어 있는 경우 "missing role" 오류가 발생할 수 있습니다. "missing role" 오류를 해결하려면 다음의 단계를 수행합니다.

1.    OpenSearch Service 콘솔에 로그인합니다.

2.    탐색 창의 **관리형 클러스터(Managed clusters)**에서 **도메인(Domains)**을 선택합니다.

3.    [작업]을 선택합니다.

4.    Modify master user를 선택합니다.

5.    Set IAM ARN as your master user를 선택합니다.

6.    IAM ARN 필드에 Amazon Cognito의 인증된 ARN 역할을 추가합니다.

7.    Submit을 선택합니다.

세분화된 액세스 제어에 대한 자세한 내용은 자습서: IAM 마스터 사용자 및 Amazon Cognito를 참조하세요.


관련 정보

OpenSearch Dashboards에 대한 Amazon Cognito 인증 구성

VPC 내에서 Amazon OpenSearch Service 도메인 시작

AWS 공식
AWS 공식업데이트됨 일 년 전