Control de acceso con IAM
En este tema, se describe cómo usar Identity and Access Management para controlar cómo Config Connector puede crear y administrar recursos de Google Cloud.
Para instalar Config Connector, debes realizar la autenticación. Para ello, crea una cuenta de servicio de IAM y, luego, usa Workload Identity para GKE a fin de vincular las cuentas de servicio de IAM con las cuentas de servicio de Kubernetes. IAM permite que Config Connector realice acciones en recursos específicos. Cuando limitas los permisos asignados a tus cuentas de servicio, tienes un mayor control sobre los tipos de recursos que puede crear Config Connector.
Puedes optar por administrar los recursos con una sola cuenta de servicio o con varias cuentas de servicio.
Cuenta de servicio única
Cuando instalas Config Connector con el complemento de GKE o con la instalación manual, puedes configurar el modo de clúster en tu CustomResource ConfigConnector
.
Con el modo de clúster, puedes usar una sola cuenta de servicio de IAM para crear y administrar recursos, incluso si usas Config Connector para administrar varios proyectos.
En el siguiente diagrama, se muestra cómo funciona este modo, en el que la misma cuenta de servicio administra dos proyectos:
Varias cuentas de servicio
Puedes usar varias cuentas de servicio si configuras el modo con espacio de nombres en tu
ConfigConnector
CustomResource.
El modo con espacio de nombres te permite dividir los permisos en función de las inquietudes respectivas de las diferentes cuentas de servicio de IAM y aislar los permisos entre diferentes espacios de nombres de Kubernetes, ya que puedes asociar una cuenta de servicio diferente para cada espacio de nombres.
Elige el modo de espacio de nombres en los siguientes casos:
- Deseas aislar los permisos de IAM a nivel del espacio de nombres de Kubernetes.
- Puedes administrar una gran cantidad de recursos de Google Cloud desde varios proyectos de Google Cloud en un solo clúster.
Por ejemplo, debes crear una cuenta de servicio de IAM para cada proyecto, organizar los recursos de cada proyecto en el mismo espacio de nombres de Kubernetes y, luego, vincular la cuenta de servicio de IAM correspondiente al espacio de nombres de Kubernetes. Esto te permite separar permisos de IAM para cada proyecto, de modo que cada uno tenga un conjunto de permisos distinto y no relacionado.
En el siguiente diagrama, se muestra una descripción general de cómo funciona el modo con espacio de nombres, en el que una cuenta de servicio diferente administra cada proyecto:
En el modo con espacio de nombres, cada cuenta de servicio de IAM está vinculada a un espacio de nombres de forma predeterminada. Cuando creas recursos dentro de ese espacio de nombres, Config Connector usa esta cuenta de servicio para crear recursos de Google Cloud. Hay un Pod cnrm-controller-manager
dedicado de Config Connector para cada espacio de nombres que actúa en nombre de la cuenta de servicio de IAM asociada con el espacio de nombres.
Para obtener información sobre cómo configurar el modo con espacio de nombres, consulta Instala Config Connector con un modo con espacio de nombres.
Ajusta 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 hayas asignado el rol a la cuenta de servicio para la que configuraste Config Connector. Si configuraste Config Connector en el modo con espacio de nombres, es posible que tengas más de una cuenta de servicio de IAM.
Después de completar la instalación, es posible que debas quitar o actualizar los permisos amplios para alinearse con las consideraciones de seguridad y las prácticas recomendadas.
Una ventaja principal de Config Connector son las herramientas unificadas. Esto significa que puedes usar Config Connector para ajustar las funciones y los permisos de IAM. Puedes usar los recursos IAMPolicyMember o IAMPartialPolicy en Config Connector para configurar los permisos de IAM. Esto requiere una cuenta de servicio de IAM con permisos de administrador en los proyectos, las carpetas o la organización. Esta cuenta de servicio se debe configurar para vincularse a la instalación de Config Connector a través del modo de clúster o el modo de espacio de nombres.
En las siguientes secciones, se enumeran diferentes ejemplos de políticas que usan Config Connector para administrar los permisos de IAM.
Permiso de propietario de la organización
Para expandir los permisos de Config Connector a fin de que pueda administrar todos los proyectos y carpetas de una organización determinada, completa los siguientes pasos:
Crea el siguiente 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
Reemplaza lo siguiente:
NAMESPACE
por el nombre del espacio de nombresSERVICE_ACCOUNT_NAME
por el nombre de tu cuenta de servicioHOST_PROJECT_ID
por el ID del proyecto host de tu cuenta de servicioroles/owner
por la función adecuadaORGANIZATION_ID
por el ID de la organización
Aplica el manifiesto YAML a tu clúster con
kubectl
o cualquier herramienta de configuración de administración de tu elección.
Permiso de propietario de carpeta
Para expandir los permisos de Config Connector a fin de que pueda administrar todos los proyectos y carpetas de una carpeta determinada, completa los siguientes pasos:
Crea el siguiente 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
Reemplaza lo siguiente:
NAMESPACE
por el nombre del espacio de nombresSERVICE_ACCOUNT_NAME
por el nombre de tu cuenta de servicioHOST_PROJECT_ID
por el ID del proyecto host de tu cuenta de servicioroles/owner
por la función adecuadaFOLDER_ID
por el ID de la carpeta
Aplica el manifiesto YAML a tu clúster con
kubectl
o cualquier herramienta de configuración de administración de tu elección.
Permisos de propietario del proyecto
Para permitir que Config Connector administre los recursos de un proyecto específico, completa los siguientes pasos:
Crea el siguiente 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
Reemplaza lo siguiente:
NAMESPACE
por el nombre del espacio de nombresSERVICE_ACCOUNT_NAME
por el nombre de tu cuenta de servicioHOST_PROJECT_ID
por el ID del proyecto host de tu cuenta de servicioroles/owner
por la función adecuadaPROJECT_ID
por el ID del proyecto de destino
Aplica el manifiesto YAML a tu clúster con
kubectl
o cualquier herramienta de configuración de administración de tu elección.
Roles predefinidos
Si prefieres otorgar permisos más limitados a Config Connector, puedes asignar una o más funciones de IAM a la instalación de Config Connector. Para ello, crea algunos recursos IAMPolicyMember o un recurso IAMPartialPolicy combinado. Las siguientes funciones se suelen asignar a la cuenta de servicio de Config Connector:
Editor: Otorgar la función de editor permite la mayoría de las funciones de Config Connector, excepto las configuraciones en toda la organización o el proyecto, como las modificaciones de IAM.
Función de administrador de cuentas de servicio de IAM: otorgar los permisos
roles/iam.serviceAccountAdmin
permite que Config Connector configure cuentas de servicio de IAM.Resource Manager: Otorgar una función de Resource Manager, como
roles/resourcemanager.folderCreator
, permite que Config Connector administre carpetas y organizaciones.
Roles personalizados
Si las funciones predefinidas no satisfacen tus necesidades, puedes crear funciones personalizadas con los permisos que tú definas.
Para obtener más información sobre cómo crear y asignar funciones personalizadas, consulta Crea y administra funciones personalizadas.