1. Introducción
Autokey de Cloud KMS simplifica la creación y el uso de claves de encriptación administradas por el cliente (CMEK), ya que automatiza el aprovisionamiento y la asignación. Con Autokey, los llaveros de claves, las claves y las cuentas de servicio no necesitan planificarse ni aprovisionarse antes de ser necesarios. En cambio, Autokey genera tus claves a pedido a medida que se crean tus recursos, y depende de permisos delegados en lugar de administradores de Cloud KMS.
El uso de claves generadas por Autokey puede ayudarte a alinear de manera coherente los estándares de la industria y las prácticas recomendadas para la seguridad de los datos, incluidos el nivel de protección de HSM, la separación de obligaciones, la rotación de claves, la ubicación y la especificidad de las claves. Autokey crea claves que siguen los lineamientos generales y los específicos del tipo de recurso para los servicios de Google Cloud que se integran en Autokey de Cloud KMS. Después de que se crean, las claves solicitadas con Autokey funcionan de manera idéntica a otras claves de Cloud HSM con la misma configuración.
Qué compilarás
En este codelab, iniciarás recursos protegidos con Autokey de Cloud KMS creando lo siguiente:
- un recurso de carpeta
- un proyecto que contendrá tus claves
- un agente de servicio que actúe como tu asistente de administración de claves
- un proyecto que alojará tus recursos protegidos
- Conjuntos de datos de BigQuery, discos persistentes y buckets de Cloud Storage encriptados con Autokey de Cloud KMS
Requisitos
- Organización de Google Cloud
- Para completar este lab, la principal de Google Cloud debe tener los siguientes roles a nivel de la organización:
- Administrador de Autokey de Cloud KMS (roles/cloudkms.autokeyAdmin)
- Administrador de IAM de carpeta (roles/resourcemanager.folderIamAdmin)
- Usuario de la cuenta de facturación (roles/billing.user)
- Proyectos de Google Cloud con la facturación habilitada
- Experiencia básica de Linux
2. Crea una carpeta
Las carpetas son nodos en la jerarquía de recursos de Cloud Platform. Una carpeta puede contener proyectos, otras carpetas o una combinación de ambos. Los recursos de la organización pueden usar carpetas para agrupar proyectos del nodo de recursos de la organización en una jerarquía. Para crear una carpeta, haz lo siguiente:
- Ve a la página Administrar recursos en la consola de Google Cloud.
- Asegúrate de que el nombre del recurso de la organización esté seleccionado en la lista desplegable correspondiente, en la parte superior de la página.
- Haz clic en Crear carpeta.
- Seleccionar carpeta estándar
- En el cuadro Nombre de la carpeta, ingresa el nombre de la carpeta nueva. Para este lab, considera usar “Autokey-Folder”
- En Destino, haz clic en Examinar y, luego, selecciona el recurso de organización o la carpeta en la que deseas crear tu nueva carpeta.
- Haz clic en Crear.
3. Crea un proyecto de recursos
Es importante crear un proyecto de recursos que contenga los recursos (como los conjuntos de datos de BigQuery, los discos persistentes y los buckets de Cloud Storage) que deseas encriptar con Autokey de Cloud KMS. Si intentas crear recursos protegidos por Autokey en el proyecto de clave, este rechaza la solicitud de una clave nueva. Para crear el proyecto de recursos, haz lo siguiente:
- Ve a la página Administrar recursos en la consola de Google Cloud.
- Haz clic en Crear proyecto.
- En la lista desplegable Seleccionar una organización, en la parte superior de la página, selecciona la opción "Autokey-Folder" carpeta.
- En la ventana Nuevo proyecto que aparece, ingresa un nombre de proyecto y selecciona una cuenta de facturación según corresponda. Para este lab, considera “Recursos encriptados con Autokey”
- En el cuadro Ubicación, selecciona la carpeta "Autokey-Folder" carpeta. Ese recurso será el superior de la jerarquía del proyecto nuevo. La configuración debería ser similar a la siguiente:
- Copia el ID del proyecto. En el ejemplo anterior, el ID del proyecto es "causal-hour-43319-m4". pero tu ID será diferente en el editor de texto que prefieras.
- Haz clic en Crear
- Selecciona el ícono de Cloud Shell en la esquina superior derecha de la pantalla.
- Cuando Cloud Shell esté activo, guarda tu ID del proyecto de Autokey como una variable ejecutando el siguiente comando:
export RESOURCE_PROJECT=<paste your Resource Project ID>
Porque el ID de mi proyecto es "key-management-433319" mi comando se ve así:
export AUTOKEY_PROJECT=causal-hour-43319-m4
- Ejecuta el siguiente comando para ejecutar comandos desde tu proyecto de claves:
gcloud config set project $RESOURCE_PROJECT
Cuando se te solicite, haz clic en “Autorizar” para autorizar Cloud Shell.
- Debido a que este proyecto contendrá recursos, debemos habilitar las APIs para los servicios que protegerá Autokey. Ejecuta el siguiente comando:
gcloud services enable storage.googleapis.com bigquery.googleapis.com compute.googleapis.com
4. Crea un proyecto clave
Recomendamos crear un proyecto que contenga los recursos de Cloud KMS que creó Autokey. Esto se denominará el “proyecto clave” en el futuro. El proyecto clave se puede crear en la misma carpeta en la que planeas habilitar Autokey. No debes crear otros recursos dentro del proyecto clave. Si intentas crear recursos protegidos por Autokey en el proyecto de clave, este rechaza la solicitud de una clave nueva. Para crear el proyecto de claves, sigue estos pasos:
- Ve a la página Administrar recursos en la consola de Google Cloud.
- Haz clic en Crear proyecto.
- En la lista desplegable Seleccionar una organización, en la parte superior de la página, selecciona la opción "Autokey-Folder" carpeta.
- En la ventana Nuevo proyecto que aparece, ingresa un nombre de proyecto y selecciona una cuenta de facturación según corresponda. En este lab, considera “Administración de claves”
- En el cuadro Ubicación, selecciona la carpeta "Autokey-Folder" carpeta. Ese recurso será el superior de la jerarquía del proyecto nuevo. La configuración debería ser similar a la siguiente:
- Copia el ID del proyecto. En el ejemplo anterior, el ID del proyecto es “key-management-433319”. pero tu ID será diferente en el editor de texto que prefieras.
- Haz clic en Crear.
5. Prepara el proyecto de clave de Autokey
Ahora que se creó cada proyecto, es momento de configurar el proyecto clave para usar Autokey de Cloud KMS.
- Selecciona el ícono de Cloud Shell en la esquina superior derecha de la pantalla.
- Cuando Cloud Shell esté activo, guarda tu ID del proyecto de Autokey como una variable ejecutando el siguiente comando:
export AUTOKEY_PROJECT=<paste your Autokey Project ID>
Porque el ID de mi proyecto es "key-management-433319" mi comando se ve así:
export AUTOKEY_PROJECT=key-management-433319
- Ejecuta el siguiente comando para ejecutar comandos desde tu proyecto de claves:
gcloud config set project $AUTOKEY_PROJECT
Cuando se te solicite, haz clic en “Autorizar” para autorizar Cloud Shell.
- Para habilitar la API de Cloud KMS, ejecuta el siguiente comando:
gcloud services enable cloudkms.googleapis.com kmsinventory.googleapis.com
- Ejecuta el siguiente comando para guardar el número de proyecto como una variable llamada AUTOKEY_PROJECT_NUMBER.
export AUTOKEY_PROJECT_NUMBER=$(gcloud projects list \
--filter="$(gcloud config get-value project)" \
--format="value(PROJECT_NUMBER)")
- Ejecuta el siguiente comando para guardar el correo electrónico de tu principal como una variable:
export KEY_ADMIN_EMAIL=<paste your Principal's email>
- Otorga permisos de administrador de Cloud KMS en el proyecto de clave a tus usuarios administradores de Cloud KMS
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=user:$KEY_ADMIN_EMAIL
6. Configura los agentes de servicio de Cloud KMS
El agente de servicio de Cloud KMS para un proyecto de claves crea claves y aplica vinculaciones de políticas de IAM durante la creación de recursos, en nombre de un administrador humano de Cloud KMS. Para poder crear y asignar claves, el agente de servicio de Cloud KMS requiere permisos de administrador de Cloud KMS.
- Busca el ID de la organización con el siguiente comando:
gcloud organizations list | grep -P -i 'ID:' | grep -i '[0-9]'
- Copia el ID de la organización (este es el resultado numérico destacado en rojo).
- Guarda el ID de la organización como una variable llamada ORG_ID:
export ORG_ID=<paste your Organization ID>
- Para crear el agente de servicio de Cloud KMS, ejecuta el siguiente comando:
gcloud beta services identity create --service=cloudkms.googleapis.com \
--project=$AUTOKEY_PROJECT_NUMBER
- Otorga el rol de administrador de Cloud KMS al agente de servicio:
gcloud projects add-iam-policy-binding $AUTOKEY_PROJECT_NUMBER \
--role=roles/cloudkms.admin \
--member=serviceAccount:service-$AUTOKEY_PROJECT_NUMBER@gcp-sa-cloudkms.iam.gserviceaccount.com
- Agrega una vinculación de política de IAM para que puedas ver tu uso de la clave de Cloud KMS. El uso de claves proporciona información para cada clave, incluida la cantidad de recursos protegidos, proyectos y productos únicos de Google Cloud que usan la clave. Este nivel de detalle está disponible para cualquier persona con el rol de visualizador de Cloud KMS en la clave. Ejecuta el siguiente comando:
gcloud organizations add-iam-policy-binding $ORGANIZATION_ID \
--member="serviceAccount:service-org-$ORGANIZATION_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- Otorga a tu cuenta de servicio de Cloud KMS el rol de agente de servicios de organización de Cloud KMS (cloudkms.orgServiceAgent) en el recurso de tu organización.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="serviceAccount:service-org-$ORG_ID@gcp-sa-cloudkms.iam.gserviceaccount.com" \
--role='roles/cloudkms.orgServiceAgent'
- Otorga el rol de visualizador de recursos protegidos de Cloud KMS en tu recurso de organización a cualquier persona que necesite ver detalles de uso de claves.
gcloud organizations add-iam-policy-binding $ORG_ID \
--member="user:$KEY_ADMIN_EMAIL" \
--role='roles/cloudkms.protectedResourcesViewer'
7. Otorga roles de usuario de Autokey
Para que tus desarrolladores puedan usar Autokey, debes otorgarles el rol necesario. Puedes otorgar el rol a nivel de carpeta o a nivel de proyecto. Este rol permite a los desarrolladores solicitar claves al agente de servicio de Cloud KMS mientras crean recursos en esa carpeta o proyecto.
El primer paso para otorgar el rol es guardar el ID de la carpeta.
- Busca el ID de la carpeta con el siguiente comando:
gcloud projects describe $AUTOKEY_PROJECT | grep 'id' | grep -P -i '[0-9]+'
- Copia el ID de la carpeta (esta es la parte que se destaca en rojo).
- Guarda el ID de la carpeta como una variable llamada FOLDER_ID.
export FOLDER_ID=<paste the folder ID>
A los fines de este lab, definiremos al administrador de claves como el usuario de Autokey. Sin embargo, en los casos de uso de producción y en organizaciones con más de una persona, el administrador de claves debe ser diferente del desarrollador que usa Autokey.
- Otorga el rol roles/cloudkms.autokeyUser a nivel de carpeta:
gcloud resource-manager folders add-iam-policy-binding \
$FOLDER_ID --role=roles/cloudkms.autokeyUser \
--member=user:$KEY_ADMIN_EMAIL
8. Habilita Autokey de Cloud KMS en una carpeta de recursos
En este paso, habilitarás Autokey de Cloud KMS en una carpeta de recursos y, luego, identificarás el proyecto de Cloud KMS que contendrá recursos de Autokey para esa carpeta. Si habilitas Autokey en esta carpeta, se habilita para todos los proyectos de recursos de la carpeta.
- En la consola de Google Cloud, ve a la página de controles de KMS.
- Haz clic en Seleccionar carpeta.
- En el selector de contexto, selecciona la carpeta en la que deseas habilitar Autokey. Será la misma carpeta que creaste anteriormente y contiene tu proyecto de recursos y el proyecto de administración de claves. Se verá de la siguiente manera:
- Haga clic en Habilitar.
- Haz clic en Explorar para seleccionar el proyecto clave
- Selecciona tu proyecto de administración de claves y haz clic en Enviar.
Un mensaje confirma que Autokey de Cloud KMS está habilitado en la carpeta. La página Controles de KMS debería verse de la siguiente manera:
9. Crea recursos protegidos con Autokey de Cloud KMS
Discos persistentes de Compute Engine
Autokey crea una clave nueva para cada disco, imagen e imagen de máquina en la misma ubicación que el recurso que se está creando.
Para crear un disco, completa los siguientes pasos:
- En la consola de Google Cloud, ve a la página Discos.
- Haz clic en Crear disco y, luego, ingresa las propiedades del disco nuevo.
- En Encriptación, selecciona Clave de Cloud KMS.
- En Tipo de clave, selecciona Cloud KMS con Autokey y, luego, haz clic en Solicitar una clave nueva. Un mensaje indicará cuando tu clave se haya creado correctamente y esté lista para usarse.
- Para terminar de crear el disco, haz clic en Crear.
Puedes seguir un proceso similar para crear instancias de VM protegidas, imágenes y recursos de imagen de máquina.
Buckets de Google Cloud Storage
Autokey crea una clave nueva en la misma ubicación que el bucket. La clave que crea Autokey se asigna como la clave predeterminada del bucket.
Autokey no crea claves para objetos. De forma predeterminada, los objetos creados en un bucket usan la clave predeterminada del bucket. Si quieres encriptar un objeto con una clave que no sea la predeterminada del bucket, puedes crear una CMEK de forma manual y usarla cuando crees el objeto.
- En la consola de Google Cloud, ve a la página Crear un bucket.
- Elige un nombre permanente y único a nivel global.
- Elige una ubicación de los datos.
- Continúa con el paso “Elige cómo proteger los datos de los objetos” sección
- Haz clic en “Elige cómo proteger los datos de los objetos”. para expandir la sección
- Expande la sección Encriptación de datos y selecciona Clave de Cloud KMS.
- En Tipo de clave, selecciona Cloud KMS con Autokey y, luego, haz clic en Solicitar una clave nueva. Un mensaje indicará cuando tu clave se haya creado correctamente y esté lista para usarse.
- Para terminar de crear el bucket, haz clic en Crear. Si aparece un cuadro de diálogo en el que se explica que se impedirá el acceso público haz clic en Confirmar.
Conjunto de datos de BigQuery
Para cada conjunto de datos nuevo, Autokey crea una clave nueva en la misma ubicación que el recurso, que se convierte en la clave predeterminada del conjunto de datos. Autokey no crea claves para tablas, consultas, tablas temporales ni modelos. De forma predeterminada, estos recursos están protegidos por la clave predeterminada del conjunto de datos. Si quieres proteger un recurso de un conjunto de datos con una clave distinta de la predeterminada, puedes crear una CMEK de forma manual y usarla cuando crees el recurso.
Para crear un conjunto de datos de BigQuery, primero debes tener el rol Usuario de BigQuery.
- Regresa a Cloud Shell
- Configura Cloud Shell para que ejecute comandos desde el proyecto del recurso
gcloud config set project $RESOURCE_PROJECT
- Ejecuta el siguiente comando para guardar el número de proyecto como una variable llamada RESOURCE_PROJECT_NUMBER
export RESOURCE_PROJECT_NUMBER=$(gcloud projects list --filter="$(gcloud config get-value project)" --format="value(PROJECT_NUMBER)")
- Asígnate el rol de usuario de BigQuery
gcloud projects add-iam-policy-binding $RESOURCE_PROJECT_NUMBER \
--role=roles/bigquery.user \
--member=user:$KEY_ADMIN_EMAIL
Ahora que tienes el rol de usuario de BigQuery, puedes crear un conjunto de datos y protegerlo con Autokey.
- En la consola de Google Cloud, ve a la página de BigQuery.
- Sigue las instrucciones para Crear un conjunto de datos hasta llegar a Opciones avanzadas > Encriptación.
- En Encriptación, selecciona Clave de Cloud KMS.
- En Tipo de clave, selecciona Cloud KMS con Autokey y, luego, haz clic en Solicitar una clave nueva. Un mensaje indicará cuando tu clave se haya creado correctamente y esté lista para usarse.
- Para terminar de crear el conjunto de datos, haz clic en Crear conjunto de datos.
10. Explora tus claves
En este paso, explorarás las claves que creó Autokey de Cloud KMS en tu nombre en la página Inventario de claves. En la página Key Inventory, se proporciona información completa sobre las claves criptográficas de tu proyecto. Ten en cuenta que los datos podrían retrasarse. Por ejemplo, si creas un nuevo recurso protegido, este y la versión de clave asociada no se agregan de inmediato a la pestaña Seguimiento de uso. Consulta más limitaciones aquí.
- En la consola de Google Cloud, ve a la página Key Inventory.
- Opcional: Para filtrar la lista de claves, ingresa los términos de búsqueda en el cuadro filter_list Filtro y, luego, presiona Intro. Por ejemplo, puedes filtrar por ubicación, llavero de claves, estado o cualquier otra propiedad de las claves.
- Haz clic en el nombre de la clave cuya información de uso deseas ver.
- Haz clic en “Resumen”. Observa que tienes una clave por recurso creado. Cada nombre de clave incluye el nombre del recurso que protege la clave (p.ej., “compute-disk” o “storage-bucket”). Autokey de Cloud KMS garantiza que cada clave esté programada para rotarse 365 días después de su creación y que a cada clave se le asigne el “HSM” nivel de protección.
- Haz clic en la pestaña Seguimiento de uso. Observa el nivel de información que se presenta: cada recurso que encripta la clave se muestra aquí, junto con el proyecto, la ubicación y la fecha de creación.
- Opcional: Para filtrar la lista de recursos protegidos, ingresa los términos de búsqueda en el cuadro filter_list Filtro y luego presiona Intro.
11. Felicitaciones
¡Felicitaciones! Creaste correctamente recursos de Google Cloud y los encriptaste automáticamente a pedido con Autokey de Cloud KMS.
Ahora conoces los pasos clave necesarios para configurar Autokey y usarlo para encriptar automáticamente tus recursos con las claves de Cloud KMS.
12. Próximos pasos
Sube datos a tus recursos con encriptación de Autokey
- Crea una instancia de Google Compute Engine (GCE)
- Conecta el disco persistente protegido por Autokey a tu instancia de GCE
- Sube datos a tu conjunto de datos de BigQuery
- Sube objetos a un bucket de Google Cloud Storage
- Carga datos de Google Cloud Storage en BigQuery