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 autenticarte mediante la creación de un y, luego, usar la Federación de identidades para cargas de trabajo para GKE para GKE enlaza el IAM las cuentas de servicio con las cuentas de servicio de Kubernetes. IAM permite Config Connector realiza 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 elegir administrar recursos con una o con varias cuentas de servicio.

Cuenta de servicio única

Cuando instalas Config Connector con el complemento de GKE o la instalación manual, puedes configurar el modo de clúster en tu CustomResource de 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 el mismo servicio administra dos proyectos:

Diagrama que muestra el Config Connector que administra varios proyectos mediante la misma cuenta de servicio

Varias cuentas de servicio

Puedes usar varias cuentas de servicio si configuras el modo con espacio de nombres en tu ConfigConnector CustomResource El modo de espacio de nombres te permite dividir los permisos según las inquietudes de las diferentes cuentas de servicio de IAM y aislar los permisos entre los 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:

  • Quieres aislar los permisos de IAM en el espacio de nombres de Kubernetes a nivel de organización.
  • Administra una gran cantidad de recursos de Google Cloud desde varios proyectos de Google Cloud en un solo clúster.

A modo de ejemplo, creas una cuenta de servicio de IAM para cada proyecto, organizas los recursos de cada proyecto en el mismo espacio de nombres de Kubernetes y, luego, vinculas la cuenta de servicio de IAM correspondiente al espacio de nombres de Kubernetes. Esto te permite separar los 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 de espacio de nombres, en el que cada proyecto está administrado por una cuenta de servicio diferente:

Diagrama que muestra el Config Connector que administra varios proyectos mediante las dos cuentas de servicio diferentes

En el modo con espacio de nombres, cada cuenta de servicio de IAM está vinculada a un 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úe en nombre de la cuenta de servicio de IAM asociados con el espacio de nombres.

Si deseas obtener información para configurar el modo con espacio de nombres, consulta Cómo instalar Config Connector. con un modo con espacio de nombres

Cómo 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 lo hayas asignado a la cuenta de servicio para la que configuraste Config Connector. Si configuraste Config Connector en , 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 la configuración permisos para alinearse con las consideraciones de seguridad y las prácticas recomendadas.

Una de las principales ventajas de Config Connector es la unificación de herramientas. Esto significa que puedes usa Config Connector para ajustar los roles de IAM y permisos. Puedes usar los recursos IAMPolicyMember o IAMPartialPolicy en Config Connector para configurar los permisos de IAM. Para ello, se requiere una cuenta de servicio de IAM con permisos de administrador en tus proyectos, carpetas o 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 del modo con 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 para que pueda administrar todos los proyectos y carpetas de una organización determinada, completa los siguientes pasos:

  1. 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 nombres
    • SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio
    • HOST_PROJECT_ID por el ID del proyecto host de la cuenta de servicio
    • roles/owner por la función adecuada
    • ORGANIZATION_ID por el ID de tu organización
  2. Aplica el manifiesto YAML a tu clúster con kubectl o cualquier herramienta de administración de configuración que elijas.

Permiso del propietario de la carpeta

Para expandir los permisos de Config Connector de modo que pueda administrar todos los proyectos y carpetas en una en esa carpeta, completa los siguientes pasos:

  1. 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 nombres
    • SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio
    • HOST_PROJECT_ID por el ID del proyecto host de la cuenta de servicio
    • roles/owner por la función adecuada
    • FOLDER_ID por el ID de tu carpeta
  2. Aplica el manifiesto YAML al clúster con kubectl o cualquier herramienta de administración de configuración que elijas.

Permisos del propietario del proyecto

Para permitir que Config Connector administre los recursos de un proyecto específico, haz lo siguiente: completa los siguientes pasos:

  1. 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 nombres
    • SERVICE_ACCOUNT_NAME por el nombre de tu cuenta de servicio
    • HOST_PROJECT_ID por el ID del proyecto host de la cuenta de servicio
    • roles/owner por la función adecuada
    • PROJECT_ID por el ID del proyecto objetivo
  2. Aplica el manifiesto YAML a tu clúster con kubectl o cualquier herramienta de administración de configuración que elijas.

Funciones predefinidas

Si prefieres otorgar permisos más limitados a Config Connector, puedes asigna uno o más roles de IAM a tu Config Connector instalación creando algunos IAMPolicyMember recursos o una combinación IAMPartialPolicy recurso. Por lo general, los siguientes roles se asignan al Config Connector cuenta de servicio:

  • Editor: Otorga el rol de editor. permite la mayoría de las funciones de Config Connector, excepto en todo el proyecto o en toda la organización como las modificaciones de IAM.

  • Rol de administrador de cuenta de servicio de IAM: Otorgar los permisos roles/iam.serviceAccountAdmin permite que Config Connector configure las cuentas de servicio de IAM.

  • Resource Manager: otorgar un Rol de Resource Manager como roles/resourcemanager.folderCreator, permite que Config Connector administrar carpetas y organizaciones.

Funciones personalizadas

Si las funciones predefinidas no satisfacen tus necesidades, puedes crear funciones personalizadas con los permisos que definas.

Para obtener más información sobre cómo crear y asignar funciones personalizadas, consulta Crea y administra funciones personalizadas.

¿Qué sigue?