Signature Version 4 서명으로 Gremlin 콘솔을 사용하여 Neptune에 연결 - Amazon Neptune

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

Signature Version 4 서명으로 Gremlin 콘솔을 사용하여 Neptune에 연결

서명 버전 4 인증을 사용하여 Gremlin 콘솔을 사용하여 Amazon Neptune에 연결하는 방법은 버전 이상을 사용하는지 또는 3.4.11 이전 버전을 TinkerPop 사용하는지에 따라 다릅니다. 어느 경우든 다음과 같은 사전 조건이 필요합니다.

  • 요청에 서명하는 데 필요한 IAM 보안 인증 정보가 있어야 합니다. 개발자 안내서의 기본 자격 증명 공급자 체인 사용을 참조하십시오. AWS SDK for Java

  • DB 클러스터에서 사용 중인 Neptune 엔진 버전과 호환되는 Gremlin 콘솔 버전을 설치해야 합니다.

임시 보안 인증 정보를 사용하는 경우 세션 토큰과 마찬가지로 지정된 간격이 지나면 만료되므로, 새 보안 인증 정보를 요청할 때 세션 토큰을 업데이트해야 합니다. IAM 사용 설명서의 임시 보안 자격 증명을 사용하여 AWS 리소스에 대한 액세스 요청을 참조하십시오.

SSL/TLS를 사용한 연결에 대한 도움말은 SSL/TLS 구성을 참조하세요.

TinkerPop 3.4.11 이상을 사용하여 Sig4 서명을 통해 Neptune에 연결

TinkerPop 3.4.11 이상에서는 명령으로 설정된 연결에 Sigv4 서명자를 연결하는 방법을 제공하는 방법을 사용할 handshakeInterceptor() 수 있습니다. :remote Java에 사용되는 접근 방식과 마찬가지로 Cluster 객체를 수동으로 구성한 다음 :remote 명령에 전달해야 합니다.

참고로 이는 :remote 명령이 구성 파일을 사용하여 연결을 형성하는 일반적인 상황과는 상당히 다릅니다. handshakeInterceptor()를 프로그래밍 방식으로 설정해야 하고 파일에서 구성을 로드할 수 없기 때문에 구성 파일 접근 방식이 효과가 없습니다.

Sig4 서명을 사용하여 그렘린 콘솔 (TinkerPop 3.4.11 이상) 을 연결합니다.
  1. Gremlin 콘솔을 실행합니다.

    $ bin/gremlin.sh
  2. gremlin> 프롬프트가 나타나면 amazon-neptune-sigv4-signer 라이브러리를 설치합니다. 이 작업은 콘솔에서 한 번만 수행하면 됩니다.

    :install com.amazonaws amazon-neptune-sigv4-signer 2.4.0

    이 단계에서 문제가 발생하는 경우 Grape 구성 관련 설명서를 참조하는 것이 도움이 될 수 있습니다. TinkerPop

    참고

    HTTP 프록시를 사용하는 경우 이 단계에서 :install 명령이 완료되지 않는 오류가 발생할 수 있습니다. 이 문제를 해결하려면 다음 명령을 실행하여 콘솔에 프록시에 대해 알립니다.

    System.setProperty("https.proxyHost", "(the proxy IP address)") System.setProperty("https.proxyPort", "(the proxy port)")
  3. 서명을 처리하는 데 필요한 클래스를 handshakeInterceptor()로 가져옵니다.

    :import com.amazonaws.auth.DefaultAWSCredentialsProviderChain :import com.amazonaws.neptune.auth.NeptuneNettyHttpSigV4Signer
  4. 임시 보안 인증 정보를 사용하는 경우 다음과 같이 세션 토큰도 제공해야 합니다.

    System.setProperty("aws.sessionToken","(your session token)")
  5. 다른 방법으로 계정 보안 인증 정보를 설정하지 않은 경우 다음과 같이 계정 보안 인증 정보를 할당할 수 있습니다.

    System.setProperty("aws.accessKeyId","(your access key)") System.setProperty("aws.secretKey","(your secret key)")
  6. Neptune에 연결할 Cluster 객체를 수동으로 구성합니다.

    cluster = Cluster.build("(host name)") \ .enableSsl(true) \ .handshakeInterceptor { r -> \ def sigV4Signer = new NeptuneNettyHttpSigV4Signer("(Amazon region)", \ new DefaultAWSCredentialsProviderChain()); \ sigV4Signer.signRequest(r); \ return r; } \ .create()

    Neptune DB 인스턴스의 호스트 이름을 찾는 데 도움이 필요하면 Amazon Neptune 엔드포인트에 연결을 참조하세요.

  7. 이전 단계에서 Cluster 객체의 변수 이름을 사용하여 :remote 연결을 설정합니다.

    :remote connect tinkerpop.server cluster
  8. 다음 명령을 입력하여 원격 모드로 전환합니다. 그러면 모든 Gremlin 쿼리가 원격 연결로 전송됩니다.

    :remote console

3.4.11 TinkerPop 이전 버전을 사용하여 Sig4 서명을 통해 Neptune에 연결

TinkerPop 3.4.10 이하에서는 아래 설명과 같이 Neptune에서 제공하는 amazon-neptune-gremlin-java-sigv4 라이브러리를 사용하여 콘솔을 Sigv4 서명으로 Neptune에 연결합니다.

Sig4 서명을 사용하여 그렘린 콘솔 (3.4.11 이전 TinkerPop 버전) 을 연결합니다.
  1. Gremlin 콘솔을 실행합니다.

    $ bin/gremlin.sh
  2. gremlin> 프롬프트가 나타나면 amazon-neptune-sigv4-signer 라이브러리를 설치합니다. 이 작업은 콘솔에서 한 번만 수행하면 됩니다.

    :install com.amazonaws amazon-neptune-sigv4-signer 2.4.0
    참고

    HTTP 프록시를 사용하는 경우 이 단계에서 :install 명령이 완료되지 않는 오류가 발생할 수 있습니다. 이 문제를 해결하려면 다음 명령을 실행하여 콘솔에 프록시에 대해 알립니다.

    System.setProperty("https.proxyHost", "(the proxy IP address)") System.setProperty("https.proxyPort", "(the proxy port)")

    Grape 구성 관련 설명서를 참조하는 것도 도움이 될 수 있습니다TinkerPop .

  3. 추출된 디렉토리의 conf 하위 디렉토리에 neptune-remote.yaml이라는 파일을 만듭니다.

    AWS CloudFormation 템플릿을 사용하여 Neptune DB 클러스터를 생성한 경우 파일이 이미 neptune-remote.yaml 존재합니다. 이 경우 아래 표시된 채널라이저 설정을 포함하도록 기존 파일을 편집하기만 하면 됩니다.

    그렇지 않으면 다음 텍스트를 파일에 복사하고 (호스트 이름)을 Neptune DB 인스턴스의 호스트 이름 또는 IP 주소로 바꾸세요. 참고로 호스트 이름을 감싼 대괄호([])는 필수입니다.

    hosts: [(host name)] port: 8182 connectionPool: { channelizer: org.apache.tinkerpop.gremlin.driver.SigV4WebSocketChannelizer, enableSsl: true } serializer: { className: org.apache.tinkerpop.gremlin.driver.ser.GraphBinaryMessageSerializerV1, config: { serializeResultToString: true }}
  4. 중요

    요청에 서명할 IAM 보안 인증 정보를 제공해야 합니다. 다음 명령을 입력하여 사용자의 자격 증명을 환경 변수로 설정하고 관련 항목을 해당 자격 증명으로 바꿉니다.

    export AWS_ACCESS_KEY_ID=access_key_id export AWS_SECRET_ACCESS_KEY=secret_access_key export SERVICE_REGION=us-east-1 or us-east-2 or us-west-1 or us-west-2 or ca-central-1 or sa-east-1 or eu-north-1 or eu-west-1 or eu-west-2 or eu-west-3 or eu-central-1 or me-south-1 or me-central-1 or il-central-1 or af-south-1 or ap-east-1 or ap-northeast-1 or ap-northeast-2 or ap-southeast-1 or ap-southeast-2 or ap-south-1 or cn-north-1 or cn-northwest-1 or us-gov-east-1 or us-gov-west-1

    Neptune Version 4 서명자는 기본 보안 인증 정보 공급자 체인을 사용합니다. 보안 인증 정보를 공급하는 추가 방법은 AWS SDK for Java 개발자 안내서기본 보안 인증 정보 공급자 체인 사용을 참조하세요.

    자격 증명 파일을 사용할 때에도 SERVICE_REGION 변수가 필요합니다.

  5. .yaml 파일을 사용하여 :remote 연결을 설정합니다.

    :remote connect tinkerpop.server conf/neptune-remote.yaml
  6. 다음 명령을 입력하여 원격 모드로 전환하면 모든 Gremlin 쿼리가 원격 연결로 전송됩니다.

    :remote console