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.

Colapso delresumen constante

SUGERENCIA_DE_FORMATO =

Esta constante forma parte de una API privada. Debe evitar usarla siempre que sea posible, ya que podría eliminarse o modificarse en el futuro.

"Las opciones del proveedor de GCP KMS deben tener 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 forma parte de una API privada. Debe evitarlo 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:

  • opta (encriptada)

    Un hash que contiene credenciales para el proveedor de GCP KMS

Opciones Hash (opts):

  • correo electrónico (Cadena)

    Correo electrónico de GCP.

  • :private_key (Cadena)

    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.



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

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

  si opta[:access_token]
    @access_token = opta[:access_token]
  else
    @email = validate_param(correo electrónico, opta, FORMAT_HINT)
    @clave_privada = begin
      private_key_opt = validate_param(:private_key, opta, FORMAT_HINT)
      si BSON::Entorno.jruby?
        # Realmente no podemos validar la clave privada en JRuby, por lo 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 RSAE
      # 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 tener formato DER codificado en base64 o formato PEM."
        )
      end
    end

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

Detalles de los atributos de instancia

#access_tokenString | nil (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Returns GCP access token.

Devuelve:

  • (String | nil)

    GCP access token.



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

def token de acceso
  @access_token
end

#emailstring (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el correo electrónico de GCP para autenticarse.

Devuelve:

  • (string)

    Correo electrónico de GCP para autenticar con.



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

def correo electrónico
  @email
end

#punto finalCadena | nulo (solo lectura)

Este método forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Devuelve el punto final de GCP KMS.

Devuelve:

  • (String | nil)

    Extremo de GCP KMS.



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

def endpoint
  @endpoint
end

#private_keyString (solo lectura)

Este método forma parte de una API privada. Debe evitarlo 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.



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

def private_key
  @clave_privada
end

Detalles del método de instancia

#to_documentBSON::Document

Este método forma parte de una API privada. Debe evitarlo 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.



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

def to_document
  return BSON::Documento.Nuevo si ¿vacío?
  si token de acceso
    BSON::Documento.Nuevo({ accessToken: token de acceso })
  else
    BSON::Documento.Nuevo({
      Correo electrónico: correo electrónico,
      privateKey: BSON::Binario.Nuevo(private_key, :generic),
    }).tocar hacer |BSON|
      a menos que endpoint.nil?
        BSON.update({ punto final: endpoint })
      end
    end
  end
end