Clase: Mongo::Crypt::KMS::GCP::Credentials Privado

Hereda:
Objeto
  • Objeto
Mostrar todo
Ampliado por:
Reenviable
Incluye:
validación
Definido en:
lib/mongo/crypt/kms/gcp/credentials.rb

Overview

Esta clase forma parte de una API privada. Evita usar esta clase si es posible, ya que puede ser eliminada o modificada en el futuro.

El objeto Credenciales de gestión de claves en la nube de GCP contiene las credenciales para usar el proveedor de gestión de claves en la nube (KMS) de GCP.

Resumen de constantes colapsar

SUGERENCIA DE FORMATO =

Esta constante es parte de una API privada. Deberías evitar usar esta constante si es posible, ya que podría ser retirada o cambiada en el futuro.

'Las opciones de proveedor de GCP KMS deben estar en el formato: ' +
"{ email: 'EMAIL', private_key: 'PRIVATE-KEY' }"

Resumen de atributos de la instancia colapsar

Resumen del método de instancia colapsar

Métodos incluidos en Validaciones

#validate_param, validate_tls_options

Detalles del Constructor

#initialize(opts) ⇒ Credenciales

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Crea un objeto de credenciales de GCP KMS a partir de un hash de parámetros.

Parámetros:

  • opciones (encriptada)

    Un hash que contiene credenciales para el proveedor de GCP KMS

Opciones Hash (opts):

  • correo electrónico (string)

    Correo electrónico de GCP.

  • :private_key (string)

    Clave privada de GCP. Este método acepta una clave privada tanto en formato DER codificado en base64, como en formato PEM.

  • punto final (String | nil)

    El endpoint de GCP, opcional.

  • :access_token (String | nil)

    Token de acceso GCP, opcional. Si esta opción no es nula, se ignoran otras opciones.

Aumenta:

  • (ArgumentError)

    Si faltan las opciones requeridas o están formateadas incorrectamente.



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
# Archivo 'lib/mongo/crypt/kms/gcp/credentials.rb', línea 60

def inicializar(opciones)
  @opts = opciones
  return si ¿vacío?

  si opciones[:access_token]
    @access_token = opciones[:access_token]
  else
    @email = validate_param(correo electrónico, opciones, FORMAT_HINT)
    @clave_privada = begin
      private_key_opt = validate_param(:private_key, opciones, FORMAT_HINT)
      si BSON::Entorno.jruby?
        # Realmente no podemos validar la llave privada en JRuby, así que asumimos
        # está en formato DER codificado en base64.
        private_key_opt
      else
        # Verifique si la llave privada está en formato PEM.
        pkey = OpenSSL::PKey::RSA.Nuevo(private_key_opt)
        # PEM es, debe convertirse a DER codificado en base64.
        der = si pkey.respond_to?(:private_to_der)
                pkey.private_to_der
              else
                pkey.to_der
              end
        Base64.encode64(der)
      end
    rescate OpenSSL::PKey::Error RSA
      # Verifica si la clave privada está en DER.
      begin
        OpenSSL::PKey.Lea(Base64.descodificar64(private_key_opt))
        # La clave privada está bien, utilízala.
        private_key_opt
      rescate OpenSSL::PKey::PKeyError
        propagar ArgumentError.Nuevo(
          'La opción private_key debe estar en formato DER codificado en base64 o en formato PEM.'
        )
      end
    end

    @endpoint = validate_param(
      punto final, opciones, FORMAT_HINT, obligatorio: false
    )
  end
end

Detalles de atributo de instancias

#access_tokenString | nil (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Returns GCP access token.

Devuelve:

  • (String | nil)

    GCP access token.



39
40
41
# Archivo 'lib/mongo/crypt/kms/gcp/credentials.rb', línea 39

def access_token
  @access_token
end

#emailstring (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el correo electrónico de GCP para autenticarse con él.

Devuelve:

  • (string)

    Correo electrónico de GCP para autenticar con.



30
31
32
# Archivo 'lib/mongo/crypt/kms/gcp/credentials.rb', línea 30

def correo electrónico
  @email
end

#endpointString| nil (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el endpoint de GCP KMS.

Devuelve:

  • (String | nil)

    Extremo de GCP KMS.



36
37
38
# Archivo 'lib/mongo/crypt/kms/gcp/credentials.rb', línea 36

def endpoint
  @endpoint
end

#private_keyString (solo lectura)

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve la clave privada GCP, formato DER codificado en base64.

Devuelve:

  • (string)

    Clave privada de GCP, formato DER codificado en base64.



33
34
35
# Archivo 'lib/mongo/crypt/kms/gcp/credentials.rb', línea 33

def private_key
  @clave_privada
end

Detalles del método de instancia

#to_documentBSON::Document

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Convierte el objeto credencial a un documento BSON en formato libmongocrypt.

Devuelve:

  • (BSON::Document)

    Credenciales de Azure KMS en formato libmongocrypt.



107
108
109
110
111
112
113
114
115
116
117
118
119
120
# Archivo 'lib/mongo/crypt/kms/gcp/credentials.rb', línea 107

def to_document
  return BSON::Documento.Nuevo si ¿vacío?

  si access_token
    BSON::Documento.Nuevo({ accessToken: access_token })
  else
    BSON::Documento.Nuevo({
                         correo electrónico: correo electrónico,
                         privateKey: BSON::Binario.Nuevo(private_key, :generic),
                       }).tocar hacer |BSON|
      BSON.update({ punto final: endpoint }) a menos que endpoint.nil?
    end
  end
end