클래스: Mongo::Crypt::KMS::GCP::CredentialsRetriever Private

상속:
객체
  • 객체
모두 표시
다음에 정의됨:
lib/ Mongo/crypt/ KMS/ GCP/credentials_retriever.rb

개요

이 클래스는 비공개 API의 일부입니다. 이 클래스는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

이 클래스는 Google Compute Engine 메타데이터 호스트를 사용하여 GPC 자격 증명을 검색합니다. Google Compute Engine 인스턴스에서 드라이버를 사용할 때 사용해야 합니다.

상수 요약 접기

METADATA_HOST_ENV =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

'GCE_METADATA_HOST'
DEFAULT_HOST =

이 상수는 비공개 API의 일부입니다. 이 상수는 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

'metadata.google.internal'

클래스 메서드 요약 접기

클래스 메서드 세부 정보

.fetch_access_token(timeout_holder = nil) ⇒ 문자열

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

GCP 액세스 토큰을 가져옵니다.

매개변수:

반환합니다:

  • (string)

    GCP 액세스 토큰.

다음을 발생시킵니다.



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# 파일 'lib/ Mongo/crypt/ KMS/ GCP/credentials_retriever.rb', 40줄

def self.fetch_access_token(timeout_holder = nil)
  호스트 = ENV.가져오기(METADATA_HOST_ENV) { DEFAULT_HOST }
  uri = URI("http://#{호스팅하다}/computeMetadata/v1/ 인스턴스/service-accounts/ 기본값/token")
  req = Net::HTTP::get.신규(uri)
  req['Metadata-Flavor'] = 'Google'
  resp = fetch_response(uri, req, timeout_holder)
  만약 resp.코드 != '200'
    올리다 KMS::CredentialsNotFound,
      "GCE 메타데이터 호스트가 #{resp.code}코드로 응답했습니다. "
  end
  parsed_resp = JSON.parse(resp.body)
  parsed_resp.가져오기('access_token')
구출 JSON::ParserError, KeyError => e
  올리다 KMS::CredentialsNotFound,
    "GCE 메타데이터 response is invalid: '#{resp.body}'; #{e.class}: #{e.message}"
  구출 ::시간 초과::오류, IOError, SystemCallError, SocketError => e
    올리다 KMS::CredentialsNotFound,
          "GCP 메타데이터 응답을 받을 수 없습니다. #{e.class}: #{e.message}"
end