Amazon Neptune에서 IAM 역할 연결 - Amazon Neptune

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

Amazon Neptune에서 IAM 역할 연결

중요

체인 IAM 역할을 활용하는 엔진 릴리스 1.2.1.0.R3에 도입된 새로운 대량 로드 교차 계정 기능은 경우에 따라 성능이 저하된 대량 로드 성능을 관찰할 수 있습니다. 따라서 이 기능을 지원하는 엔진 릴리스에 대한 업그레이드는 이 문제가 해결될 때까지 일시적으로 중단되었습니다.

클러스터에 역할을 연결하면 클러스터에서 해당 역할을 맡아 Amazon S3에 저장된 데이터에 액세스할 수 있습니다. 엔진 릴리스 1.2.1.0.R3부터 해당 역할이 필요한 모든 리소스에 액세스할 수 없는 경우 클러스터가 다른 리소스에 대한 액세스 권한을 얻기 위해 위임할 수 있는 하나 이상의 추가 역할을 체인으로 연결할 수 있습니다. 체인의 각 역할은 클러스터가 체인의 끝에 있는 역할을 수임할 때까지 체인의 다음 역할을 수임합니다.

역할을 함께 묶으려면 역할 간에 신뢰 관계를 구성해야 합니다. 예를 들어, RoleBRoleA를 체인으로 연결하려면 RoleB를 위임할 수 있는 권한 정책이 있어야 하며, RoleB에 권한을 RoleA로 다시 넘겨줄 수 있는 신뢰 정책이 있어야 합니다. 자세한 내용은 IAM 역할 사용을 참조하세요.

체인의 첫 번째 역할은 데이터를 로드하는 클러스터에 연결된 역할이어야 합니다.

체인에서 다음 역할을 맡는 첫 번째 역할과 이후의 각 역할에는 다음이 포함되어야 합니다.

  • sts:AssumeRole 작업에 Allow 영향을 미치는 특정 문을 포함하는 정책입니다.

  • Resource 요소에서 다음 역할의 Amazon 리소스 이름(ARN)입니다.

참고

대상 Amazon S3 버킷은 클러스터와 동일한 AWS 리전에 있어야 합니다.

연결된 역할을 사용한 크로스 계정 액세스

다른 계정에 속하는 역할을 하나 또는 여러 개 연결하여 크로스 계정 액세스를 허용할 수 있습니다. 클러스터가 일시적으로 다른 계정에 속하는 역할을 맡으면 클러스터는 해당 계정의 리소스에 액세스할 수 있습니다.

예를 들어, 계정 A계정 B에 속한 Amazon S3 버킷의 데이터에 액세스하려고 한다고 가정해 보겠습니다.

  • 계정 A는 라는 이름의 Neptune에 대한 AWS 서비스 역할을 생성하고 클러스터에 RoleA 연결합니다.

  • 계정 B계정 B 버킷의 데이터에 액세스할 수 있는 권한이 부여된 RoleB 이름의 역할을 생성합니다.

  • 계정 A는 권한 정책을 RoleA에 연결하여 RoleB를 수임할 수 있도록 합니다.

  • 계정 B는 권한을 다시 RoleA로 전달하도록 허용하는 RoleB에 신뢰 정책을 연결합니다.

  • 계정 A계정 B 버킷의 데이터에 액세스하기 위해 RoleARoleB를 연결하는 iamRoleArn 파라미터를 사용하여 로더 명령을 실행합니다. 그런 다음 로더 작업 기간 동안 RoleA계정 B의 Amazon S3 버킷에 액세스하는 RoleB를 일시적으로 수임합니다.

체인 역할을 사용한 크로스 계정 액세스를 나타낸 다이어그램

예를 들어, RoleA는 Neptune과의 신뢰 관계를 설정하는 신뢰 정책을 가지고 있습니다.

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

또한 RoleA에는 계정 B가 소유한 RoleB을 수임할 수 있는 권한 정책이 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1487639602000", "Effect": "Allow", "Action": [ "sts:AssumeRole" ], "Resource": "arn:aws:iam::(Account B ID):role/RoleB" } ] }

반대로, RoleBRoleA와 신뢰 관계를 구축하기 위한 신뢰 정책을 보유하게 됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Principal": { "AWS": "arn:aws:iam::(Account A ID):role/RoleA" } } ] }

또한 RoleB계정 B에 위치한 Amazon S3 버킷의 데이터에 액세스할 수 있는 권한이 필요합니다.

AWS Security Token Service (STS) VPC 엔드포인트 생성

Neptune 로더는 프라이빗 IP 주소를 통해 비공개로 액세스 AWS STS APIs하기 위해 IAM 역할을 연결할 AWS STS 때 VPC 엔드포인트가 필요합니다. 안전하고 확장 가능한 방식으로 Amazon에서 VPC 엔드포인트를 VPC AWS STS 통해 에 직접 연결할 수 있습니다. 인터페이스 VPC 엔드포인트를 사용하면 아웃바운드 트래픽 방화벽을 열 필요가 없으므로 더 나은 보안 태세를 제공합니다. 또한 Amazon VPC 엔드포인트 사용의 다른 이점도 제공합니다.

VPC 엔드포인트를 사용할 때 에 대한 트래픽 AWS STS 은 인터넷을 통해 전송되지 않으며 Amazon 네트워크를 떠나지 않습니다. VPC 는 네트워크 트래픽에 대한 가용성 위험 또는 대역폭 제약 AWS STS 없이 에 안전하게 연결됩니다. 자세한 내용은 AWS STS 인터페이스 VPC 엔드포인트 사용을 참조하세요.

AWS Security Token Service (STS)에 대한 액세스를 설정하려면
  1. 에 로그인 AWS Management Console 하고 에서 Amazon VPC 콘솔을 엽니다https://console.aws.amazon.com/vpc/.

  2. 탐색 창에서 엔드포인트를 선택합니다.

  3. 엔드포인트 생성을 선택합니다.

  4. 인터페이스 유형 엔드포인트의 서비스 이름: com.amazonaws.region.sts를 선택합니다.

  5. Neptune DB 인스턴스 및 EC2 인스턴스VPC가 포함된 를 선택합니다.

  6. EC2 인스턴스가 있는 서브넷 옆의 확인란을 선택합니다. 동일한 가용 영역에서 여러 서브넷을 선택할 수 없습니다.

  7. IP 주소 유형(IP address type)에서 다음 옵션 중에서 선택합니다.

    • IPv4 - 엔드포인트 네트워크 인터페이스에 IPv4 주소를 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 주소 범위가 있는 경우에만 지원됩니다.

    • IPv6 - 엔드포인트 네트워크 인터페이스에 IPv6 주소를 할당합니다. 이 옵션은 선택한 모든 서브넷이 전용 서브넷IPv6인 경우에만 지원됩니다.

    • 듀얼 스택 - 엔드포인트 네트워크 인터페이스에 IPv4 및 IPv6 주소를 모두 할당합니다. 이 옵션은 선택한 모든 서브넷에 IPv4 및 IPv6 주소 범위가 모두 있는 경우에만 지원됩니다.

  8. 보안 그룹 에서 VPC 엔드포인트의 엔드포인트 네트워크 인터페이스와 연결할 보안 그룹을 선택합니다. Neptune DB 인스턴스 및 EC2 인스턴스에 연결된 모든 보안 그룹을 선택해야 합니다.

  9. 정책 에서 전체 액세스를 선택하여 VPC 엔드포인트의 모든 리소스에 대한 모든 보안 주체의 모든 작업을 허용합니다. 그렇지 않으면 사용자 지정을 선택하여 보안 주체가 VPC 엔드포인트를 통해 리소스에 대한 작업을 수행할 수 있는 권한을 제어하는 VPC 엔드포인트 정책을 연결합니다. 이 옵션은 서비스가 VPC 엔드포인트 정책을 지원하는 경우에만 사용할 수 있습니다. 자세한 내용은 엔드포인트 정책을 참조하세요.

  10. (선택 사항) 태그를 추가하려면 새로운 태그 추가를 선택하고 태그 키와 태그 값을 입력합니다.

  11. Create endpoint(엔드포인트 생성)을 선택합니다.

엔드포인트 생성에 대한 자세한 내용은 Amazon VPC 사용 설명서의 VPC 엔드포인트를 참조하세요. Amazon STS VPC 엔드포인트는 IAM 역할 연결에 필요한 사전 조건입니다.

이제 AWS STS 엔드포인트에 대한 액세스 권한을 부여했으므로 데이터를 로드할 준비를 할 수 있습니다. 지원되는 형식에 대한 자세한 내용은 로드 데이터 형식 섹션을 참조하세요.

로더 명령 내에서 역할 연결

iamRoleArn 파라미터ARNs에 쉼표로 구분된 역할 목록을 포함하여 로더 명령을 실행할 때 역할 체인을 지정할 수 있습니다.

대부분 체인에 2개의 역할만 있으면 되지만, 3개 이상의 역할을 함께 연결할 수도 있습니다. 예를 들어, 이 로더 명령은 3가지 역할을 연결합니다.

curl -X POST https://localhost:8182/loader \ -H 'Content-Type: application/json' \ -d '{ "source" : "s3://(the target bucket name)/(the target date file name)", "iamRoleArn" : "arn:aws:iam::(Account A ID):role/(RoleA),arn:aws:iam::(Account B ID):role/(RoleB),arn:aws:iam::(Account C ID):role/(RoleC)", "format" : "csv", "region" : "us-east-1" }'