Classe: Mongo::Crypt::KMS::GCP::Credentials Private

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Inclui:
Validações
Definido em:
lib/mongo/crypt/KMS/GCP/credentials.rb

Visão geral

Esta classe faz parte de uma API privada. Evite usar essa classe, se possível, pois ela pode ser removida ou alterada no futuro.

O objeto GCP Cloud Key Management Credentials contém credenciais para usar o provedor GCP KMS.

Colapsode resumo constante

FORMAT_HINT =

Essa constante faz parte de uma API privada. Você deve evitar usar essa constante, se possível, pois ela pode ser removida ou alterada no futuro.

'As opções do provedor GCP KMS devem estar no formato:  ' +
"{ email: 'EMAIL', private_key: 'PRIVATE-KEY' }"

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de instância

Métodos incluídos nas Validações

#validate_param, validate_tls_options

Detalhes do construtor

#initialize(opts) ➤ Credenciais

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Cria um objeto de credenciais GCP KMS de um hash de parâmetros.

Parâmetros:

  • opciona (Hash)

    Um hash que contém credenciais para o fornecedor GCP KMS

Hash de opções (opts):

  • :email (string)

    E-mail GCP.

  • :private_key (string)

    Chave privada GCP. Esse método aceita chave privada no formato DER codificado de base64 ou no formato PEM.

  • :endpoint (string | nil)

    Ponto de conexão GCP, opcional.

  • :access_token (string | nil)

    Token de acesso GCP, opcional. Se esta opção não for nula, outras opções serão ignoradas.

Aumenta:

  • (ArgumentError)

    Se as opções necessárias estiverem ausentes ou formatadas incorretamente.



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# Arquivo 'lib/mongo/crypt/KMS/GCP/credentials.rb', linha 60

def inicializar(opciona)
  @opts = opciona
  Método se vazio?

  se opciona[:access_token]
    @access_token = opciona[:access_token]
  mais
    @email = validate_param(:email, opciona, FORMAT_HINT)
    @private_key = começar
      private_key_opt = validate_param(:private_key, opciona, FORMAT_HINT)
      se BSON::ambiente.jRuby?
        # Não podemos validar chave privada no JRuby, então assumimos
        # está no formato DER codificado de64 base.
        private_key_opt
      mais
        # Verifique se a chave privada está no formato PEM.
        pkey = OpenSSL::PKey::RSA.Novo(private_key_opt)
        # PEM que é, precisa ser convertido em DER codificado de base64 .
        der = se pkey.respond_to?(:private_to_der)
                pkey.private_to_der
              mais
                pkey.to_der
              end
        Base64.codificar64(der)
      end
    salvar OpenSSL::PKey::RSAError
      # Verifique se a chave privada está no DER.
      começar
        OpenSSL::PKey.ler(Base64.decodificar64(private_key_opt))
        # A chave privada está bem, use-a.
        private_key_opt
      salvar OpenSSL::PKey::PKeyError
        aumentar ArgumentError.Novo(
          'A opção private_key deve ser64 formato DER codificado de base ou formato PEM. '
        )
      end
    end

    @endpoint = validate_param(
      :endpoint, opciona, FORMAT_HINT, necessário: false
    )
  end
end

Detalhes do atributo da instância

#access_token ➤ string | nil (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o token de acesso GCP.

Retorna:

  • (string | nil)

    Token de acesso GCP.



39
40
41
# Arquivo 'lib/mongo/crypt/KMS/GCP/credentials.rb', linha 39

def access_token
  @access_token
end

#emailstring (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o e-mail do GCP para autenticação.

Retorna:

  • (string)

    E-mail GCP para autenticação.



30
31
32
# Arquivo 'lib/mongo/crypt/KMS/GCP/credentials.rb', linha 30

def Email
  @email
end

#endpointstring | nil (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna o endpoint GCP KMS.

Retorna:

  • (string | nil)

    Ponto de extremidade GCP KMS.



36
37
38
# Arquivo 'lib/mongo/crypt/KMS/GCP/credentials.rb', linha 36

def endpoint
  @endpoint
end

#private_keystring (somente leitura)

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Retorna a chave privada GCP, o formato DER codificado de base64 .

Retorna:

  • (string)

    Chave privada GCP, formato DER codificado de base64 .



33
34
35
# Arquivo 'lib/mongo/crypt/KMS/GCP/credentials.rb', linha 33

def PRIVATE_KEY
  @private_key
end

Detalhes do método de instância

#to_document ➤ BSON::Document

Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.

Converta o objeto de credenciais em um documento BSON no formato libmongocrypt.

Retorna:

  • (BSON::Document)

    Credenciais Azure KMS no formato libmongocrypt.



107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Arquivo 'lib/mongo/crypt/KMS/GCP/credentials.rb', linha 107

def to_document
  Método BSON::Documento.Novo se vazio?

  se access_token
    BSON::Documento.Novo({ accessToken: access_token })
  mais
    BSON::Documento.Novo({
                         e-mail: Email,
                         chave privada: BSON::Binário.Novo(PRIVATE_KEY, :general),
                       }).toque fazer |BSON|
      BSON.update({ ponto de extremidade: endpoint }) a menos que endpoint.nada?
    end
  end
end