En google cloud en español Publicado en 2017 dic 21 por Victor Yang
Descubramos Google Cloud KMS en acción para almacenar y compartir un secreto
Para el consejo de hoy, vamos a echar un vistazo a Google Cloud KMS: el Servicio de administración de claves proporcionado por GCP. Presentaremos un caso de uso concreto y veremos cómo usamos KMS para almacenar y compartir nuestro secreto.
Vamos a ilustrar con un ejemplo del mundo real paso a paso. Podemos cifrar y descifrar un archivo JSON de la cuenta de servicio para las instancias de Google Compute Engine. Estas instancias son parte de un clúster de ElasticSearch. El administrador de Google Cloud crea la cuenta de servicio. Terraform utiliza la cuenta de servicio para aprovisionar las instancias de cómputo como se muestra aquí.
Los desarrolladores quieren una copia del archivo JSON de la cuenta de servicio para que puedan desarrollar y probar con el clúster ElasticSearch. El administrador de Google Cloud crea el archivo JSON del servicio de texto sin formato, ¿dónde y cómo almacenarlo de forma segura? Almacenar en la computadora portátil del administrador no es 100% seguro. Estos son los pasos que aprovechan Cloud KMS en su lugar.
Nota: para simplificar, no vamos a hablar aquí sobre la rotación de llaves.
El comando anterior crea una clave SA para encriptar el archivo json de la cuenta de servicio de google.
En nuestro ejemplo de Terraform, podemos usar el proveedor de datos externos de Terraform como en este ejemplo para descargar y descifrar elásticosearch_svc_account.json.enc en la consola. El administrador de la nube puede proporcionar el servicio JSON al desarrollador que lo necesite a través de un canal seguro.
Descubramos Google Cloud KMS en acción para almacenar y compartir un secreto
Para el consejo de hoy, vamos a echar un vistazo a Google Cloud KMS: el Servicio de administración de claves proporcionado por GCP. Presentaremos un caso de uso concreto y veremos cómo usamos KMS para almacenar y compartir nuestro secreto.
Como lo usamos
Secretos como la cuenta de servicio de Google JSON, clave y secreto de AWS, ID de base de datos y contraseña, etc., se pueden cifrar y descifrar fácilmente con Google Cloud KMS. Cloud KMS no almacena secretos directamente. Puede encriptar los secretos que almacene en otro lugar, es decir, la clave misma se almacena dentro de KMS.Vamos a ilustrar con un ejemplo del mundo real paso a paso. Podemos cifrar y descifrar un archivo JSON de la cuenta de servicio para las instancias de Google Compute Engine. Estas instancias son parte de un clúster de ElasticSearch. El administrador de Google Cloud crea la cuenta de servicio. Terraform utiliza la cuenta de servicio para aprovisionar las instancias de cómputo como se muestra aquí.
Los desarrolladores quieren una copia del archivo JSON de la cuenta de servicio para que puedan desarrollar y probar con el clúster ElasticSearch. El administrador de Google Cloud crea el archivo JSON del servicio de texto sin formato, ¿dónde y cómo almacenarlo de forma segura? Almacenar en la computadora portátil del administrador no es 100% seguro. Estos son los pasos que aprovechan Cloud KMS en su lugar.
Nota: para simplificar, no vamos a hablar aquí sobre la rotación de llaves.
Crear un llavero
gcloud kms keyrings create dev_keyring --location global
Crea una clave
gcloud kms keys create sa --location global \
--keyring dev_keyring --purpose encryption
Cifrado
gcloud kms encrypt --location=global --keyring=dev_keyring --key=sa \
--plaintext-file=elasticsearch_svc_account.json \
--ciphertext-file=elasticsearch_svc_account.json.enc
En este punto, podemos eliminar el archivo de texto sin formato elasticsearch_svc_account.json de la computadora portátil.
Almacenamiento
export GOOGLE_PROJECT=$(gcloud config get-value project)
export ENV=dev
gsutil cp elasticsearch_svc_account.json.enc gs://${GOOGLE_PROJECT}-secrets-${ENV}/
Dónde almacenar los sercretod cifrados? Se pueden almacenar en un depósito GCS o en cualquier almacenamiento de datos del sistema de configuración gestionada, como una Bag-data-Chef, un Salt-pillar, una Ansible-vault o una HashiCorp Vault. En nuestro ejemplo de Terraform, se almacena en un GCS bucket.
Descifrado
export GOOGLE_PROJECT=$(gcloud config get-value project)
export ENV=dev
gcloud kms decrypt --location=global --keyring=dev_keyring \
--key=sa --plaintext-file=/dev/stdout \
--ciphertext-file=<(gsutil cat gs://${GOOGLE_PROJECT}-secrets-${ENV}/elasticsearch_svc_account.json.enc)
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.