다른 AWS 계정의 Amazon OpenSearch Service 도메인에서 데이터를 복원하려면 어떻게 해야 합니까?

6분 분량
0

다른 AWS 계정의 Amazon OpenSearch Service 도메인에서 데이터를 복원하고 싶습니다. 어떻게 해야 합니까?

간략한 설명

다른 AWS 계정의 OpenSearch Service 도메인에서 데이터를 복원하려면 교차 계정 액세스를 설정해야 합니다. OpenSearch Service 도메인과 데이터를 복원하려는 도메인 간에 교차 계정 액세스가 수립되어야 합니다. 또한 도메인에서 데이터를 저장하는 Amazon Simple Storage Service(Amazon S3) 버킷에 액세스하도록 허용해야 합니다.

이 교차 계정 액세스를 생성하려면 다음 단계를 수행합니다.

1.    계정 A에서 다음을 설정합니다.
소스(Source): OpenSearch Service 도메인, 세분화된 액세스 제어 포함
소스(Source): Amazon S3 버킷

2.    계정 B에서 세부적인 액세스 제어를 통해 대상(OpenSearch Service 도메인)을 설정합니다.

참고: 대상(계정 B)에 S3 버킷을 만들 필요가 없습니다. 단일 S3 버킷은 AWS 계정 전체에서 데이터를 복원하는 데 사용됩니다. 이 설정은 세분화된 액세스 제어 없이 OpenSearch Service 도메인에서도 작동합니다.

해결 방법

참고: 이 문서의 예제는 Python과 Postman 코드를 사용합니다.

계정 A에 대한 교차 계정 액세스 설정

1.    OpenSearch Service 도메인과 동일한 리전의 계정 A에서 S3 버킷을 생성합니다.

2.    AWS Identity Access Management(IAM) 정책을 생성하여 S3 버킷 액세스 권한을 제공합니다.

{
     "Version": "2012-10-17",
     "Statement": [{
          "Action": [
               "s3:ListBucket"
          ],
          "Effect": "Allow",
          "Resource": [
               "arn:aws:s3:::snapshot"
          ]
     },
     {
          "Action": [
               "s3:GetObject",
               "s3:PutObject",
               "s3:DeleteObject",
               "iam:PassRole"
          ],
          "Effect": "Allow",
          "Resource": [
               "arn:aws:s3:::snapshot/*"
          ]
     }]
}

참고: "arn:aws:s3:::snapshot"을 1단계에서 만든 버킷 ARN으로 바꿉니다.

3.    IAM 역할을 만들고 Amazon Elastic Compute Cloud(Amazon EC2)를 서비스로 선택합니다.

4.    새로 생성된 IAM 역할에 IAM 정책(2단계에서 생성됨)을 추가합니다.

5.    IAM 역할을 열고 신뢰 관계를 선택합니다.

6.    다음 정책의 신뢰 관계를 업데이트합니다.

{
     "Version": "2012-10-17",
     "Statement": [{
          "Effect": "Allow",
          "Principal": {
               "Service": "es.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
     }]
}

참고: "Service": "ec2.amazonaws.com"을 "Service": "es.amazonaws.com"으로 바꿉니다. 또한 이후 단계에 필요한 ARN 역할을 기록합니다.

7.    다음 옵션 중 하나를 선택합니다.
"iam:PassRole" 권한을 포함하도록 (2단계의) 정책을 업데이트하고 정책을 IAM 역할에 연결합니다. 이 권한을 통해 OpenSearch 서비스는 S3 버킷에 대한 쓰기 액세스 권한을 가질 수 있습니다.

또는

새 IAM 정책을 생성하고 정책을 IAM 역할에 연결합니다.

참고: 정책을 업데이트하여 모든 권한을 하나의 IAM 역할로 설정할 수 있습니다. 또는 새 IAM 정책을 생성하고 권한을 분할하려는 경우 다른 사용 사례에 대해 IAM 정책을 재사용할 수 있습니다.

다음은 필수 IAM 권한이 있는 정책의 예입니다.

{
     "Version": "2012-10-17",
     "Statement": [{
          "Effect": "Allow",
          "Action": "iam:PassRole",
          "Resource": "arn:aws:iam::Account A:role/cross"
     },
     {
          "Effect": "Allow",
          "Action": "es:ESHttpPut",
          "Resource": "arn:aws:es:us-east-1:Account A:domain/srestore/*"
     }]
}

이 정책은 HTTP 요청에 서명하는 데 사용되는 IAM 사용자 또는 역할에 연결되어야 합니다.

참고: "arn:aws:iam::Account A:role/cross"를 3단계에서 만든 역할로 바꿉니다. 또한 계정 A의 소스로 나열된 OpenSearch Service 도메인으로 “arn:aws:es:us-east-1:Account A:domain/srestore/*”를 업데이트합니다. 계정 A의 소스는 클러스터 스냅샷에 사용됩니다.

8.    IAM 사용자를 생성하고 2단계에서 생성한 정책(Amazon S3에 액세스하는 데 필요한 권한 포함)을 연결합니다. FGAC를 사용하여 읽기 및 쓰기 API에 대한 액세스 권한을 제공하려면 이 IAM 사용자에게 계정 A의 OpenSearch Service 도메인에 대한 관리자 액세스 권한이 있어야 합니다. 세분화된 액세스 제어를 사용하는 방법에 대한 자세한 내용은 OpenSearch 대시보드에서 스냅샷 역할 매핑(세분화된 액세스 제어를 사용하는 경우)을 참조하세요.

9.    (선택 사항) Python 코드를 사용하여 S3 버킷을 OpenSearch Service에 등록하는 경우 계정 A에서 Amazon EC2 시스템을 시작한 다음 3단계에서 생성한 IAM 역할을 연결합니다.

참고: 보안 그룹이 OpenSearch Service 도메인에 액세스할 수 있는지 확인해야 합니다.

계정 A의 소스에 S3 버킷 등록

계정 A의 소스 도메인에 S3 버킷을 등록하려면 다음 단계를 수행합니다.

1.    OpenSearch Service 도메인 엔드포인트 및 S3 버킷 이름이 포함된 URL로 PUT 필드를 업데이트합니다. 예를 들면 다음과 같습니다.

https://endpointofdomain.amazonaws.com/_snapshot/snapshot

2.    [승인(Authorization)] 탭을 선택합니다.

3.    IAM 사용자의 [AccessKey] 및 [SecretKey]를 업데이트합니다.

4.    [AWS 리전(AWS Region)] 및 [서비스 이름(Service Name)]을 업데이트합니다.

5.    저장을 선택합니다.

6.    [헤더(Headers)] 탭을 선택합니다.

7.    키 유형으로 [콘텐츠 유형(Content-Type)]을 선택합니다.

8.    키 값으로 [애플리케이션/JSON(Application/JSON)]을 선택합니다.

9.    Sélectionnez Save (Enregistrer).

10.    [본문(Body)] 탭을 선택합니다.

11.    다음 코드를 사용하세요.

{
     "type": "s3",
     "settings": {
          "bucket": "snapshot",
          "region": "us-east-1",
          "role_arn": "arn:aws:iam::Account A:role/cross"
     }
}

12.    OpenSearch Service 콘솔을 통해 쿼리를 제출하려면 [보내기(Send)]를 선택합니다. 등록이 완료되면 상태 코드: 200 OK(Status Code: 200 OK) 메시지가 나타납니다.

13.    계정 A의 OpenSearch 대시보드에 로그인한 다음 S3 버킷에서 사용 가능한 데이터를 확인합니다.

14.    다음 명령을 사용하여 새 스냅샷을 만듭니다.

PUT /_snapshot/<registered_snapshot_repository>/<snapshot_name>

다음은 예시 출력입니다.

GET _cat/snapshots/casnapshot
today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4

이 출력은 계정 A의 OpenSearch Service 도메인에 대한 S3 버킷 등록이 완료되었는지 확인합니다.

계정 B에 대한 교차 계정 액세스 설정

1.    계정 B에서 정책 및 IAM 역할을 만들어 계정 A와 동일한 S3 버킷 ARN을 지정합니다.

{
     "Version": "2012-10-17",
     "Statement": [{
          "Action": [
               "s3:ListBucket"
          ],
          "Effect": "Allow",
          "Resource": [
               "arn:aws:s3:::snapshot" --> S3 bucket ARN from Account A
          ]
     },
     {
          "Action": [
               "s3:GetObject",
               "s3:PutObject",
               "s3:DeleteObject",
               "iam:PassRole"
          ],
          "Effect": "Allow",
          "Resource": [
               "arn:aws:s3:::snapshot/*"
          ]
     },
     {
          "Effect": "Allow",
          "Action": "iam:PassRole",
          "Resource": "arn:aws:iam::Account B:role/cross" --> Role created in Account B 
     },
     {
          "Effect": "Allow",
          "Action": "es:*",
          "Resource": "arn:aws:es:us-east-1:Account B:domain/restore/*" --> Destination ES domain in Account B
     }]
}

다음은 역할에 대한 신뢰 정책의 예입니다.

{
     "Version": "2012-10-17",
     "Statement": [{
          "Effect": "Allow",
          "Principal": {
               "Service": "es.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
     }]
}

2.    이전에 만든 IAM 역할을 계정 B의 IAM 사용자에게 연결합니다. 동일한 IAM 사용자에게 계정 B의 대상(FGAC가 있는 도메인)에 대한 관리자 액세스 권한이 있어야 합니다. IAM 사용자 액세스 업데이트에 대한 자세한 내용은 수동 스냅샷 리포지토리 등록을 참조하세요.

3.     계정 A의 버킷에 대한 S3 버킷 정책을 업데이트하여 계정 B에 버킷에 대한 액세스 권한을 제공합니다.

{
     "Version": "2012-10-17",
     "Id": "Policy1568001010746",
     "Statement": [{
          "Sid": "Stmt1568000712531",
          "Effect": "Allow",
          "Principal": {
               "AWS": "arn:aws:iam::Account B:role/cross" --> Role which is created in Account B 
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::snapshot"
     },
     {
          "Sid": "Stmt1568001007239",
          "Effect": "Allow",
          "Principal": {
               "AWS": "arn:aws:iam::Account B:role/cross" --> Role which is created in Account B 
          },
          "Action": "s3:*",
          "Resource": "arn:aws:s3:::snapshot/*"
     }]
}

4.    S3 버킷을 도메인(계정 B)에 등록합니다.

참고: 계정 B에서 IAM 사용자의 인증 자격 증명을 사용해야 합니다. OpenSearch Service를 대상으로 선택해야 합니다.

{
     "type": "s3",
     "settings": {
          "bucket": "snapshot",
          "region": "us-east-1",
          "role_arn": "arn:aws:iam::Account B:role/cross" --> Role which is created in Account B.
     }
}

5.    계정 B의 OpenSearch 대시보드에 로그인합니다.

6.    S3 버킷에서 사용할 수 있는 계정 A의 스냅샷을 확인합니다.

GET _cat/snapshots/casnapshot

출력 예는 다음과 같습니다.

today SUCCESS 1585190280 02:38:00 1585190284 02:38:04 3.9s 4 4 0 4

이 출력은 계정 B에서 교차 계정 액세스가 성공적으로 설정되었음을 확인합니다.


관련 정보

한 Amazon OpenSearch Service 도메인에서 다른 Amazon OpenSearch Service 도메인으로 데이터를 마이그레이션하려면 어떻게 해야 합니까?

계정 B에 교차 계정 권한을 부여하기 위해 버킷 정책 연결

원격 인덱스 재지정을 사용하여 Amazon OpenSearch Service 눈금 마이그레이션

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