Control de acceso con la gestión de identidades y accesos


En este tema se describe cómo usar Gestión de Identidades y Accesos para controlar cómo puede crear y gestionar recursos Config Connector. Google Cloud

Para instalar Config Connector, debes autenticarte creando una cuenta de servicio de IAM y, a continuación, usar la federación de Workload Identity para GKE para vincular las cuentas de servicio de IAM con las cuentas de servicio de Kubernetes. Gestión de Identidades y Accesos permite que Config Connector realice acciones en recursos específicos. Si limitas los permisos asignados a tus cuentas de servicio, tendrás más control sobre los tipos de recursos que puede crear Config Connector.

Puedes gestionar los recursos con una sola cuenta de servicio o con varias.

Una sola cuenta de servicio

Cuando instales Config Connector con el complemento de GKE o mediante la instalación manual, puedes definir el modo de clúster en tu ConfigConnector CustomResource. Con el modo de clúster, puedes usar una sola cuenta de servicio de IAM para crear y gestionar recursos, aunque uses Config Connector para gestionar varios proyectos.

En el siguiente diagrama se muestra cómo funciona este modo, en el que la misma cuenta de servicio gestiona dos proyectos:

Diagrama que muestra Config Connector gestionando varios proyectos con la misma cuenta de servicio

Varias cuentas de servicio

Puedes usar varias cuentas de servicio configurando el modo de espacio de nombres en tu ConfigConnector CustomResource. El modo de espacio de nombres te permite dividir los permisos en función de los intereses de las diferentes cuentas de servicio de gestión de identidades y accesos, así como aislar los permisos entre los diferentes espacios de nombres de Kubernetes, ya que puedes asociar una cuenta de servicio diferente a cada espacio de nombres.

Elige el modo con espacio de nombres si:

  • Quiero aislar los permisos de gestión de identidades y accesos a nivel de espacio de nombres de Kubernetes.
  • Gestionarás un gran número de Google Cloud recursos de varios Google Cloud proyectos en un solo clúster.

Por ejemplo, puedes crear una cuenta de servicio de gestión de identidades y accesos para cada proyecto, organizar los recursos de cada proyecto en el mismo espacio de nombres de Kubernetes y, a continuación, vincular la cuenta de servicio de gestión de identidades y accesos correspondiente al espacio de nombres de Kubernetes. Esto te permite separar los permisos de gestión de identidades y accesos de cada proyecto para que cada uno tenga un conjunto de permisos distinto e independiente.

En el siguiente diagrama se muestra un resumen de cómo funciona el modo con espacio de nombres, en el que cada proyecto se gestiona con una cuenta de servicio diferente:

Diagrama que muestra Config Connector gestionando varios proyectos con las dos cuentas de servicio diferentes

En el modo de espacio de nombres, cada cuenta de servicio de IAM está vinculada a un espacio de nombres de forma predeterminada. Cuando creas recursos en ese espacio de nombres, Config Connector usa esta cuenta de servicio para crear recursos. Google CloudHay un pod de Config Connector cnrm-controller-manager específico para cada espacio de nombres que suplanta la cuenta de servicio de IAM asociada al espacio de nombres.

Para saber cómo configurar el modo de espacio de nombres, consulta Instalar Config Connector con el modo de espacio de nombres.

Ajustar los permisos después de la instalación

Durante la instalación de Config Connector, es posible que hayas seleccionado un rol básico temporal y se lo hayas asignado a la cuenta de servicio para la que configuraste Config Connector. Si has configurado Config Connector en modo con espacio de nombres, es posible que tengas más de una cuenta de servicio de gestión de identidades y accesos.

Una vez completada la instalación, es posible que tengas que quitar o actualizar los permisos generales para que se ajusten a las consideraciones de seguridad y a las prácticas recomendadas.

Una de las principales ventajas de Config Connector es que ofrece herramientas unificadas. Esto significa que puedes usar Config Connector para ajustar los roles y permisos de gestión de identidades y accesos. Puedes usar los recursos IAMPolicyMember o IAMPartialPolicy de Config Connector para configurar permisos de gestión de identidades y accesos. Para ello, se necesita una cuenta de servicio de gestión de identidades y accesos con permisos de administrador en tus proyectos, carpetas u organización. Esta cuenta de servicio debe configurarse para enlazarse con la instalación de Config Connector mediante el modo de clúster o el modo de espacio de nombres.

En las siguientes secciones se muestran diferentes ejemplos de políticas que usan Config Connector para gestionar los permisos de gestión de identidades y accesos.

Permiso de propietario de la organización

Para ampliar los permisos de Config Connector de forma que pueda gestionar todos los proyectos y carpetas de una organización determinada, sigue estos pasos:

  1. Crea el siguiente archivo de manifiesto YAML:

    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
     name: iampolicymember-orglevel-permission
     namespace: NAMESPACE
    spec:
     member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com
     role: roles/owner
     resourceRef:
       kind: Organization
       external: ORGANIZATION_ID
    

    Haz los cambios siguientes:

    • NAMESPACE con el nombre de tu espacio de nombres
    • SERVICE_ACCOUNT_NAME con el nombre de tu cuenta de servicio
    • HOST_PROJECT_ID con el ID del proyecto host de tu cuenta de servicio
    • roles/owner con el rol adecuado
    • ORGANIZATION_ID con el ID de tu organización
  2. Aplica el manifiesto YAML a tu clúster mediante kubectl o cualquier herramienta de gestión de configuración que elijas.

Permiso de propietario de la carpeta

Para ampliar los permisos de Config Connector de forma que pueda gestionar todos los proyectos y las carpetas de una carpeta determinada, sigue estos pasos:

  1. Crea el siguiente archivo de manifiesto YAML:

    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
     name: iampolicymember-orglevel-permission
     namespace: NAMESPACE
    spec:
     member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com
     role: roles/owner
     resourceRef:
       kind: Folder
       external: folders/FOLDER_ID
    

    Haz los cambios siguientes:

    • NAMESPACE con el nombre de tu espacio de nombres
    • SERVICE_ACCOUNT_NAME con el nombre de tu cuenta de servicio
    • HOST_PROJECT_ID con el ID del proyecto host de tu cuenta de servicio
    • roles/owner con el rol adecuado
    • FOLDER_ID con el ID de tu carpeta
  2. Aplica el manifiesto YAML a tu clúster mediante kubectl o cualquier herramienta de gestión de configuración que elijas.

Permisos de propietario del proyecto

Para permitir que Config Connector gestione los recursos de un proyecto específico, sigue estos pasos:

  1. Crea el siguiente archivo de manifiesto YAML:

    apiVersion: iam.cnrm.cloud.google.com/v1beta1
    kind: IAMPolicyMember
    metadata:
     name: iampolicymember-orglevel-permission
     namespace: NAMESPACE
    spec:
     member: serviceAccount:SERVICE_ACCOUNT_NAME@HOST_PROJECT_ID.iam.gserviceaccount.com
     role: roles/owner
     resourceRef:
       kind: Project
       external: projects/PROJECT_ID
    

    Haz los cambios siguientes:

    • NAMESPACE con el nombre de tu espacio de nombres
    • SERVICE_ACCOUNT_NAME con el nombre de tu cuenta de servicio
    • HOST_PROJECT_ID con el ID del proyecto host de tu cuenta de servicio
    • roles/owner con el rol adecuado
    • PROJECT_ID con el ID del proyecto de destino
  2. Aplica el manifiesto YAML a tu clúster mediante kubectl o cualquier herramienta de gestión de configuración que elijas.

Funciones predefinidas

Si prefieres conceder permisos más limitados a Config Connector, puedes asignar uno o varios roles de gestión de identidades y accesos a tu instalación de Config Connector creando algunos recursos IAMPolicyMember o un recurso IAMPartialPolicy combinado. Los siguientes roles se suelen asignar a la cuenta de servicio de Config Connector:

  • Editor: al conceder el rol editor, se permite el uso de la mayoría de las funciones de Config Connector, excepto las configuraciones de todo el proyecto o la organización, como las modificaciones de gestión de identidades y accesos.

  • Rol Administrador de cuentas de servicio de gestión de identidades y accesos: al conceder los permisos de roles/iam.serviceAccountAdmin, Config Connector puede configurar cuentas de servicio de gestión de identidades y accesos.

  • Resource Manager: si asignas un rol de Resource Manager, como roles/resourcemanager.folderCreator, Config Connector podrá gestionar carpetas y organizaciones.

Roles personalizados

Si los roles predefinidos no se ajustan a tus necesidades, puedes crear roles personalizados con los permisos que definas.

Para saber cómo crear y asignar roles personalizados, consulta el artículo Crear y gestionar roles personalizados.

Siguientes pasos