Gestionar acceso a proyectos, carpetas y organizaciones

En esta página se describe cómo conceder, cambiar y revocar el acceso a proyectos, carpetas y organizaciones. Cuando concedes acceso a proyectos, carpetas y organizaciones, también concedes acceso a los recursos que contienen.

Para saber cómo gestionar el acceso a otros recursos, consulta las siguientes guías:

En Gestión de Identidades y Accesos (IAM), el acceso se concede mediante políticas de permiso, también conocidas como políticas de IAM. Una política de permiso se adjunta a un recursoTrusted Cloud by S3NS . Cada política de permiso contiene una colección de vinculaciones de roles que asocian una o varias entidades principales, como usuarios o cuentas de servicio, a un rol de gestión de identidades y accesos. Estas vinculaciones de roles conceden los roles especificados a las entidades principales, tanto en el recurso al que se adjunta la política de permiso como en todos los descendientes de ese recurso. Para obtener más información sobre las políticas de permiso, consulta Información sobre las políticas de permiso.

Puedes gestionar el acceso a proyectos, carpetas y organizaciones con laTrusted Cloud consola, la CLI de Google Cloud, la API REST o las bibliotecas de cliente de Resource Manager.

Antes de empezar

Roles de gestión de identidades y accesos necesarios

Cuando creas un proyecto, una carpeta o una organización, se te asigna automáticamente un rol que te permite gestionar el acceso a ese recurso. Para obtener más información, consulta el artículo Políticas predeterminadas.

Si no has creado el proyecto, la carpeta o la organización, asegúrate de que tienes los roles que necesitas para gestionar el acceso a ese recurso.

Para obtener los permisos que necesitas para gestionar el acceso a un proyecto, una carpeta o una organización, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el recurso al que quieras gestionar el acceso (proyecto, carpeta u organización):

Estos roles predefinidos contienen los permisos necesarios para gestionar el acceso a un proyecto, una carpeta o una organización. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para gestionar el acceso a un proyecto, una carpeta o una organización, se necesitan los siguientes permisos:

  • Para gestionar el acceso a los proyectos, sigue estos pasos:
    • resourcemanager.projects.getIamPolicy
    • resourcemanager.projects.setIamPolicy
  • Para gestionar el acceso a las carpetas, sigue estos pasos:
    • resourcemanager.folders.getIamPolicy
    • resourcemanager.folders.setIamPolicy
  • Para gestionar el acceso a las organizaciones, sigue estos pasos:
    • resourcemanager.organizations.getIamPolicy
    • resourcemanager.organizations.setIamPolicy

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Ver el acceso actual

Puedes ver quién tiene acceso a tu proyecto, carpeta u organización mediante la Trusted Cloud consola, la CLI de gcloud, la API REST o las bibliotecas de cliente de Resource Manager.

Consola

  1. En la consola, ve a la página IAM. Trusted Cloud

    Ir a Gestión de identidades y accesos

  2. Selecciona un proyecto, una carpeta o una organización.

    La consola Trusted Cloud muestra todos los principales a los que se les han concedido roles en tu proyecto, carpeta u organización. En esta lista se incluyen las entidades que han heredado roles en el recurso de los recursos superiores. Para obtener más información sobre la herencia de políticas, consulta Herencia de políticas y jerarquía de recursos.

  3. Opcional: Para ver las concesiones de roles de los agentes de servicio, marca la casilla Incluir concesiones de roles proporcionadas por S3NS.

gcloud

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para ver quién tiene acceso a tu proyecto, carpeta u organización, obtén la política de permiso del recurso. Para saber cómo interpretar las políticas de permiso, consulta el artículo Descripción de las políticas de permiso.

    Para obtener la política de permiso del recurso, ejecuta el comando get-iam-policy del recurso:

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Proporciona los siguientes valores:

    • RESOURCE_TYPE: el tipo de recurso al que quieres ver el acceso. Usa uno de estos valores: projects, resource-manager folders o organizations.

    • RESOURCE_ID: ID de tu Trusted Cloud proyecto, carpeta u organización. Los IDs de proyecto son alfanuméricos, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.

    • FORMAT: el formato que quieres que tenga la política. Usa json o yaml.

    • PATH: ruta a un nuevo archivo de salida de la política.

    Por ejemplo, el siguiente comando obtiene la política del proyecto my-project y la guarda en tu directorio principal en formato JSON:

    gcloud projects get-iam-policy my-project --format=json > ~/policy.json
  3. C#

    Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

    Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

    Para ver quién tiene acceso a tu proyecto, carpeta u organización, obtén la política de permiso del recurso. Para saber cómo interpretar las políticas de permitir, consulta el artículo Descripción de las políticas de permitir.

    En el siguiente ejemplo se muestra cómo obtener la política de permiso de un proyecto. Para saber cómo obtener la política de permiso de una carpeta o una organización, consulta la documentación de la biblioteca de cliente de Resource Manager de tu lenguaje de programación.

    
    using Google.Apis.Auth.OAuth2;
    using Google.Apis.CloudResourceManager.v1;
    using Google.Apis.CloudResourceManager.v1.Data;
    
    public partial class AccessManager
    {
        public static Policy GetPolicy(string projectId)
        {
            var credential = GoogleCredential.GetApplicationDefault()
                .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
            var service = new CloudResourceManagerService(
                new CloudResourceManagerService.Initializer
                {
                    HttpClientInitializer = credential
                });
    
            var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
                projectId).Execute();
            return policy;
        }
    }
    

    Java

    Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

    Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

    Para ver quién tiene acceso a tu proyecto, carpeta u organización, obtén la política de permiso del recurso. Para saber cómo interpretar las políticas de permitir, consulta el artículo Descripción de las políticas de permitir.

    En el siguiente ejemplo se muestra cómo obtener la política de permiso de un proyecto. Para saber cómo obtener la política de permiso de una carpeta o una organización, consulta la documentación de la biblioteca de cliente de Resource Manager de tu lenguaje de programación.

    import com.google.cloud.resourcemanager.v3.ProjectsClient;
    import com.google.iam.admin.v1.ProjectName;
    import com.google.iam.v1.GetIamPolicyRequest;
    import com.google.iam.v1.Policy;
    import java.io.IOException;
    
    public class GetProjectPolicy {
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace the variables before running the sample.
        // TODO: Replace with your project ID.
        String projectId = "your-project-id";
    
        getProjectPolicy(projectId);
      }
    
      // Gets a project's policy.
      public static Policy getProjectPolicy(String projectId) throws IOException {
        // Initialize client that will be used to send requests.
        // This client only needs to be created once, and can be reused for multiple requests.
        try (ProjectsClient projectsClient = ProjectsClient.create()) {
          GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
                  .setResource(ProjectName.of(projectId).toString())
                  .build();
          return projectsClient.getIamPolicy(request);
        }
      }
    }

    Python

    Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

    Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

    Para ver quién tiene acceso a tu proyecto, carpeta u organización, obtén la política de permiso del recurso. Para saber cómo interpretar las políticas de permitir, consulta el artículo Descripción de las políticas de permitir.

    En el siguiente ejemplo se muestra cómo obtener la política de permiso de un proyecto. Para saber cómo obtener la política de permiso de una carpeta o una organización, consulta la documentación de la biblioteca de cliente de Resource Manager de tu lenguaje de programación.

    from google.cloud import resourcemanager_v3
    from google.iam.v1 import iam_policy_pb2, policy_pb2
    
    
    def get_project_policy(project_id: str) -> policy_pb2.Policy:
        """Get policy for project.
    
        project_id: ID or number of the Google Cloud project you want to use.
        """
    
        client = resourcemanager_v3.ProjectsClient()
        request = iam_policy_pb2.GetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
    
        policy = client.get_iam_policy(request)
        print(f"Policy retrieved: {policy}")
    
        return policy

    REST

    Para ver quién tiene acceso a tu proyecto, carpeta u organización, obtén la política de permisos del recurso. Para saber cómo interpretar las políticas de permiso, consulta el artículo Descripción de las políticas de permiso.

    El método getIamPolicy de la API Resource Manager obtiene la política de permisos de un proyecto, una carpeta o una organización.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • API_VERSION: la versión de la API que se va a usar. Para proyectos y organizaciones, usa v1. En el caso de las carpetas, usa v2.
    • RESOURCE_TYPE: el tipo de recurso cuya política quieres gestionar. Usa el valor projects, folders o organizations.
    • RESOURCE_ID: ID de tu Trusted Cloud proyecto, organización o carpeta. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.
    • POLICY_VERSION: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.

    Método HTTP y URL:

    POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

    Cuerpo JSON de la solicitud:

    {
      "options": {
        "requestedPolicyVersion": POLICY_VERSION
      }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    La respuesta contiene la política de permisos del recurso. Por ejemplo:

    {
      "version": 1,
      "etag": "BwWKmjvelug=",
      "bindings": [
        {
          "role": "roles/owner",
          "members": [
            "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
          ]
        }
      ]
    }
    

Conceder o revocar un solo rol de gestión de identidades y accesos

Puedes usar la Trusted Cloud consola y la CLI de gcloud para asignar o revocar rápidamente un único rol de una sola entidad principal sin tener que editar directamente la política de permisos del recurso.Entre los tipos habituales de principales se incluyen las cuentas de servicio, las identidades de los grupos de identidades de la plantilla y las identidades de los grupos de identidades de carga de trabajo. Para ver una lista de todos los tipos de principales, consulta Tipos de principales.

Por lo general, los cambios en las políticas se aplican en un plazo de 2 minutos. Sin embargo, en algunos casos, los cambios pueden tardar 7 minutos o más en propagarse por el sistema.

Si necesitas ayuda para identificar el rol predefinido más adecuado, consulta el artículo Buscar los roles predefinidos adecuados.

Conceder un solo rol de gestión de identidades y accesos

Para conceder un solo rol a una entidad, sigue estos pasos:

Consola

  1. En la consola, ve a la página IAM. Trusted Cloud

    Ir a Gestión de identidades y accesos

  2. Selecciona un proyecto, una carpeta o una organización.

  3. Selecciona una cuenta principal a la que quieras asignar un rol:

    • Para asignar un rol a una principal que ya tiene otros roles en el recurso, busca la fila que contiene la principal, haz clic en Editar principal en esa fila y, a continuación, en Añadir otro rol.

      Para conceder un rol a un agente de servicio, selecciona la casilla Incluir concesiones de roles proporcionadas por S3NS para ver su dirección de correo electrónico.

    • Para asignar un rol a un principal que no tenga ningún rol en el recurso, haz clic en Conceder acceso y, a continuación, introduce un identificador de principal (por ejemplo, //iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com o //iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com).

  4. Selecciona un rol de la lista desplegable para concederlo. Para seguir las prácticas recomendadas de seguridad, elige un rol que incluya solo los permisos que necesite tu principal.

  5. Opcional: Añade una condición al rol.

  6. Haz clic en Guardar. Se concede el rol a la entidad principal en el recurso.

Para conceder un rol a una entidad de seguridad en más de un proyecto, carpeta u organización, sigue estos pasos:

  1. En la Trusted Cloud consola, ve a la página Gestionar recursos.

    Ve a Gestionar recursos.

  2. Selecciona todos los recursos a los que quieras conceder permisos.

  3. Si no ves el panel de información, haz clic en Mostrar panel de información. A continuación, haz clic en Permisos.

  4. Selecciona una cuenta principal a la que quieras asignar un rol:

    • Para conceder un rol a un principal que ya tiene otros roles, busca una fila que contenga el principal, haz clic en Editar principal en esa fila y, a continuación, en Añadir otro rol.
    • Para asignar un rol a un principal que aún no tenga otros roles, haz clic en Añadir principal y, a continuación, introduce un identificador de principal (por ejemplo, //iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com o //iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com).
  5. Selecciona un rol de la lista desplegable para concederlo.

  6. Opcional: Añade una condición al rol.

  7. Haz clic en Guardar. Se concede a la entidad principal el rol seleccionado en cada uno de los recursos seleccionados.

gcloud

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. El comando add-iam-policy-binding te permite asignar rápidamente un rol a una cuenta principal.

    Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:

    • RESOURCE_TYPE: el tipo de recurso al que quieras gestionar el acceso. Usa projects, resource-manager folders o organizations.

    • RESOURCE_ID: el ID de tu Trusted Cloud proyecto, carpeta u organización. Los IDs de proyecto son alfanuméricos, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.

    • PRINCIPAL: identificador de la entidad principal o del miembro, que suele tener el siguiente formato: PRINCIPAL_TYPE:ID. Por ejemplo, principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com o principalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com. Para ver una lista completa de los valores que puede tener PRINCIPAL, consulta Identificadores principales.

    • ROLE_NAME: el nombre del rol que quieres revocar. Se debe utilizar uno de los formatos indicados a continuación.

      • Roles predefinidos: roles/SERVICE.IDENTIFIER
      • Roles personalizados a nivel de proyecto: projects/PROJECT_ID/roles/IDENTIFIER
      • Roles personalizados a nivel de organización: organizations/ORG_ID/roles/IDENTIFIER

      Si quieres ver una lista de los roles predefinidos, consulta el artículo Descripción de los roles.

    • CONDITION: la condición que se va a añadir a la vinculación de roles. Si no quiere añadir ninguna condición, use el valor None. Para obtener más información sobre las condiciones, consulta el resumen de las condiciones.

    Ejecuta el siguiente comando:

    Linux, macOS o Cloud Shell

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID \
        --member=PRINCIPAL --role=ROLE_NAME \
        --condition=CONDITION

    Windows (PowerShell)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID `
        --member=PRINCIPAL --role=ROLE_NAME `
        --condition=CONDITION

    Windows (cmd.exe)

    gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ^
        --member=PRINCIPAL --role=ROLE_NAME ^
        --condition=CONDITION

    La respuesta contiene la política de gestión de identidades y accesos actualizada.

Revocar un solo rol de gestión de identidades y accesos

Para revocar un solo rol de una entidad de seguridad, haz lo siguiente:

Consola

  1. En la consola, ve a la página IAM. Trusted Cloud

    Ir a IAM

  2. Selecciona un proyecto, una carpeta o una organización.

  3. Busca la fila que contenga la cuenta principal cuyo acceso quieras revocar. A continuación, haz clic en Editar principal en esa fila.

  4. Haga clic en el botón Eliminar del rol que quiera revocar y, a continuación, haga clic en Guardar.

gcloud

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para revocar rápidamente un rol de un usuario, ejecuta el comando remove-iam-policy-binding:

    gcloud RESOURCE_TYPE remove-iam-policy-binding RESOURCE_ID 
    --member=PRINCIPAL --role=ROLE_NAME

    Proporciona los siguientes valores:

    • RESOURCE_TYPE: el tipo de recurso al que quieras gestionar el acceso. Usa projects, resource-manager folders o organizations.

    • RESOURCE_ID: ID de tu Trusted Cloud proyecto, carpeta u organización. Los IDs de proyecto son alfanuméricos, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.

    • PRINCIPAL: identificador de la entidad principal o del miembro, que suele tener el siguiente formato: PRINCIPAL_TYPE:ID. Por ejemplo, principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com o principalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com.

    • ROLE_NAME: el nombre del rol que quieres revocar. Se debe utilizar uno de los formatos indicados a continuación.

      • Roles predefinidos: roles/SERVICE.IDENTIFIER
      • Roles personalizados a nivel de proyecto: projects/PROJECT_ID/roles/IDENTIFIER
      • Roles personalizados a nivel de organización: organizations/ORG_ID/roles/IDENTIFIER

      Si quieres ver una lista de los roles predefinidos, consulta el artículo Descripción de los roles.

    Por ejemplo, para revocar el rol Creador de proyectos de la cuenta de servicio example-service-account@example-project.s3ns-system.iam.gserviceaccount.com del proyecto example-project, haz lo siguiente:

    gcloud projects remove-iam-policy-binding example-project 
    --member=serviceAccount:example-service-account@example-project.s3ns-system.iam.gserviceaccount.com
    --role=roles/resourcemanager.projectCreator

Para asegurarte de que no revocas ningún rol necesario, puedes habilitar las recomendaciones de riesgo de cambio. Las recomendaciones de riesgo de cambio generan advertencias cuando intentas revocar roles a nivel de proyecto que se han identificado como importantes.Trusted Cloud

Conceder o revocar varios roles de gestión de identidades y accesos con la Trusted Cloud consola

Puedes usar la consola para asignar y revocar varios roles a una sola entidad principal: Trusted Cloud

  1. En la consola, ve a la página IAM. Trusted Cloud

    Ir a IAM

  2. Selecciona un proyecto, una carpeta o una organización.

  3. Selecciona el principal cuyos roles quieras modificar:

    • Para modificar los roles de una entidad de seguridad que ya tiene roles en el recurso, busca la fila que contiene la entidad de seguridad, haz clic en Editar entidad de seguridad en esa fila y, a continuación, en Añadir otro rol.

      Para modificar los roles de un agente de servicio, marca la casilla Incluir concesiones de roles proporcionadas por S3NS para ver su dirección de correo.

    • Para asignar roles a una entidad principal que no tenga ningún rol en el recurso, haz clic en Grant Access (Conceder acceso) y, a continuación, introduce un identificador de entidad principal (por ejemplo, //iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com o //iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com).

  4. Modifica los roles de la entidad principal:

    • Para asignar un rol a un principal que no tenga ningún rol en el recurso, haz clic en Seleccionar un rol y, a continuación, selecciona el rol que quieras asignar en la lista desplegable.
    • Para asignar otro rol al principal, haz clic en Añadir otro rol y selecciona un rol de la lista desplegable.
    • Para sustituir uno de los roles del administrador principal por otro, haz clic en el rol actual y, a continuación, elige otro rol en la lista desplegable.
    • Para revocar uno de los roles del principal, haz clic en el botón Eliminar de cada rol que quieras revocar.

    También puedes añadir una condición a un rol, modificar la condición de un rol o quitar la condición de un rol.

  5. Haz clic en Guardar.

Conceder o revocar varios roles de gestión de identidades y accesos de forma programática

Para hacer cambios de acceso a gran escala que impliquen conceder y revocar varios roles a varias entidades, usa el patrón lectura-modificación-escritura para actualizar la política de permiso del recurso:

  1. Lee la política de permiso actual llamando a getIamPolicy().
  2. Edita la política de permiso, ya sea mediante un editor de texto o de forma programática, para añadir o eliminar principales o enlaces de roles.
  3. Escribe la política de permiso actualizada llamando a setIamPolicy().

Puedes usar la CLI de gcloud, la API REST o las bibliotecas de cliente de Resource Manager para actualizar la política de permiso.

Por lo general, los cambios en las políticas se aplican en un plazo de 2 minutos. Sin embargo, en algunos casos, los cambios pueden tardar 7 minutos o más en propagarse por el sistema.

Obtener la política de permisos actual

gcloud

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para obtener la política de permiso del recurso, ejecuta el comando get-iam-policy del recurso:

    gcloud RESOURCE_TYPE get-iam-policy RESOURCE_ID --format=FORMAT > PATH

    Proporciona los siguientes valores:

    • RESOURCE_TYPE: el tipo de recurso del que quieres obtener la política de permiso. Usa uno de los siguientes valores: projects, resource-manager folders o organizations.

    • RESOURCE_ID: ID de tu Trusted Cloud proyecto, carpeta u organización. Los IDs de proyecto son alfanuméricos, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.

    • FORMAT: el formato deseado de la política de permiso. Usa json o yaml.

    • PATH: ruta a un nuevo archivo de salida para la política allow.

    Por ejemplo, el siguiente comando obtiene la política de permiso del proyecto my-project y la guarda en tu directorio principal en formato JSON:

    gcloud projects get-iam-policy my-project --format json > ~/policy.json
  3. C#

    Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

    Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

    En el siguiente ejemplo se muestra cómo obtener la política de permiso de un proyecto. Para saber cómo obtener la política de permiso de una carpeta o una organización, consulta la documentación de la biblioteca de cliente de Resource Manager de tu lenguaje de programación.

    
    using Google.Apis.Auth.OAuth2;
    using Google.Apis.CloudResourceManager.v1;
    using Google.Apis.CloudResourceManager.v1.Data;
    
    public partial class AccessManager
    {
        public static Policy GetPolicy(string projectId)
        {
            var credential = GoogleCredential.GetApplicationDefault()
                .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
            var service = new CloudResourceManagerService(
                new CloudResourceManagerService.Initializer
                {
                    HttpClientInitializer = credential
                });
    
            var policy = service.Projects.GetIamPolicy(new GetIamPolicyRequest(),
                projectId).Execute();
            return policy;
        }
    }
    

    Java

    Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

    Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

    En el siguiente ejemplo se muestra cómo obtener la política de permiso de un proyecto. Para saber cómo obtener la política de permiso de una carpeta o una organización, consulta la documentación de la biblioteca de cliente de Resource Manager de tu lenguaje de programación.

    import com.google.cloud.resourcemanager.v3.ProjectsClient;
    import com.google.iam.admin.v1.ProjectName;
    import com.google.iam.v1.GetIamPolicyRequest;
    import com.google.iam.v1.Policy;
    import java.io.IOException;
    
    public class GetProjectPolicy {
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace the variables before running the sample.
        // TODO: Replace with your project ID.
        String projectId = "your-project-id";
    
        getProjectPolicy(projectId);
      }
    
      // Gets a project's policy.
      public static Policy getProjectPolicy(String projectId) throws IOException {
        // Initialize client that will be used to send requests.
        // This client only needs to be created once, and can be reused for multiple requests.
        try (ProjectsClient projectsClient = ProjectsClient.create()) {
          GetIamPolicyRequest request = GetIamPolicyRequest.newBuilder()
                  .setResource(ProjectName.of(projectId).toString())
                  .build();
          return projectsClient.getIamPolicy(request);
        }
      }
    }

    Python

    Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

    Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

    En el siguiente ejemplo se muestra cómo obtener la política de permiso de un proyecto. Para saber cómo obtener la política de permiso de una carpeta o una organización, consulta la documentación de la biblioteca de cliente de Resource Manager de tu lenguaje de programación.

    from google.cloud import resourcemanager_v3
    from google.iam.v1 import iam_policy_pb2, policy_pb2
    
    
    def get_project_policy(project_id: str) -> policy_pb2.Policy:
        """Get policy for project.
    
        project_id: ID or number of the Google Cloud project you want to use.
        """
    
        client = resourcemanager_v3.ProjectsClient()
        request = iam_policy_pb2.GetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
    
        policy = client.get_iam_policy(request)
        print(f"Policy retrieved: {policy}")
    
        return policy

    REST

    El método getIamPolicy de la API Resource Manager obtiene la política de permisos de un proyecto, una carpeta o una organización.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • API_VERSION: la versión de la API que se va a usar. Para proyectos y organizaciones, usa v1. En el caso de las carpetas, usa v2.
    • RESOURCE_TYPE: el tipo de recurso cuya política quieres gestionar. Usa el valor projects, folders o organizations.
    • RESOURCE_ID: ID de tu Trusted Cloud proyecto, organización o carpeta. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.
    • POLICY_VERSION: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.

    Método HTTP y URL:

    POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy

    Cuerpo JSON de la solicitud:

    {
      "options": {
        "requestedPolicyVersion": POLICY_VERSION
      }
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    La respuesta contiene la política de permisos del recurso. Por ejemplo:

    {
      "version": 1,
      "etag": "BwWKmjvelug=",
      "bindings": [
        {
          "role": "roles/owner",
          "members": [
            "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com"
          ]
        }
      ]
    }
    

    Guarda la respuesta en un archivo del tipo adecuado (json o yaml).

Modificar la política de permiso

Modifica la copia local de la política de permisos de tu recurso de forma programática o mediante un editor de texto para reflejar los roles que quieras otorgar o revocar.

Para evitar que sobrescribas otros cambios, no edites ni elimines el campo etag de la política de permisos. El campo etag identifica el estado actual de la política de permiso. Cuando estableces la política de permiso actualizada, IAM compara el valor de etag de la solicitud con el valor de etag actual y solo escribe la política de permiso si los valores coinciden.

Para editar los roles que concede una política de permiso, debes editar las vinculaciones de roles en la política de permiso. Las asignaciones de roles tienen el siguiente formato:

{
  "role": "ROLE_NAME",
  "members": [
    "PRINCIPAL_1",
    "PRINCIPAL_2",
    ...
    "PRINCIPAL_N"
  ],
  "conditions:" {
    CONDITIONS
  }
}

Los marcadores de posición tienen los siguientes valores:

  • ROLE_NAME: el nombre del rol que quieres conceder. Se debe utilizar uno de los formatos indicados a continuación.

    • Roles predefinidos: roles/SERVICE.IDENTIFIER
    • Roles personalizados a nivel de proyecto: projects/PROJECT_ID/roles/IDENTIFIER
    • Roles personalizados a nivel de organización: organizations/ORG_ID/roles/IDENTIFIER

    Si quieres ver una lista de los roles predefinidos, consulta el artículo Descripción de los roles.

  • PRINCIPAL_1, PRINCIPAL_2, ...PRINCIPAL_N: identificadores de las entidades a las que quieres asignar el rol.

    Los identificadores principales suelen tener el siguiente formato: PRINCIPAL-TYPE:ID. Por ejemplo, principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com o principalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com. Para ver una lista completa de los valores que puede tener PRINCIPAL, consulta Identificadores principales.

  • CONDITIONS: opcional. Las condiciones que especifican cuándo se concederá el acceso.

Conceder un rol de gestión de identidades y accesos

Para asignar roles a tus entidades principales, modifica las vinculaciones de roles en la política de permisos. Para saber qué roles puedes conceder, consulta el artículo Descripción de los roles o Ver roles que se pueden conceder del recurso. Si necesitas ayuda para identificar los roles predefinidos más adecuados, consulta el artículo Buscar los roles predefinidos adecuados.

También puedes usar condiciones para conceder roles solo cuando se cumplan determinados requisitos.

Para conceder un rol que ya esté incluido en la política de permitidos, añade la cuenta principal a una vinculación de roles:

gcloud

Edita la política de permiso devuelta añadiendo la entidad principal a una vinculación de roles. Este cambio no se aplicará hasta que defina la política de permiso actualizada.

Por ejemplo, supongamos que la política de permiso contiene el siguiente enlace de rol, que asigna el rol de revisor de seguridad (roles/iam.securityReviewer) a Kai:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/kai@example.com"
  ]
}

Para asignar ese mismo rol a Raha, añade el identificador de la cuenta principal de Raha a la vinculación de roles que ya existe:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/kai@example.com",
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com"
  ]
}

C#

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.


using System.Linq;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy AddMember(Policy policy, string role, string member)
    {
        var binding = policy.Bindings.First(x => x.Role == role);
        binding.Members.Add(member);
        return policy;
    }
}

Go

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

import (
	"fmt"
	"io"

	"google.golang.org/api/iam/v1"
)

// addMember adds a member to a role binding.
func addMember(w io.Writer, policy *iam.Policy, role, member string) {
	for _, binding := range policy.Bindings {
		if binding.Role != role {
			continue
		}
		for _, m := range binding.Members {
			if m != member {
				continue
			}
			fmt.Fprintf(w, "Role %q found. Member already exists.\n", role)
			return
		}
		binding.Members = append(binding.Members, member)
		fmt.Fprintf(w, "Role %q found. Member added.\n", role)
		return
	}
	fmt.Fprintf(w, "Role %q not found. Member not added.\n", role)
}

Java

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.util.ArrayList;
import java.util.List;

public class AddMember {
  public static void main(String[] args) {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/existing-role";
    // TODO: Replace with your principal.
    // For examples, see https://cloud.google.com/iam/docs/principal-identifiers
    String member = "principal-id";

    addMember(policy, role, member);
  }

  // Adds a principal to a pre-existing role.
  public static Policy addMember(Policy policy, String role, String member) {
    List<Binding> newBindingsList = new ArrayList<>();

    for (Binding b : policy.getBindingsList()) {
      if (b.getRole().equals(role)) {
        newBindingsList.add(b.toBuilder().addMembers(member).build());
      } else {
        newBindingsList.add(b);
      }
    }

    // Update the policy to add the principal.
    Policy updatedPolicy = policy.toBuilder()
            .clearBindings()
            .addAllBindings(newBindingsList)
            .build();

    System.out.println("Added principal: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

Python

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

from google.iam.v1 import policy_pb2
from snippets.get_policy import get_project_policy
from snippets.set_policy import set_project_policy


def modify_policy_add_principal(
    project_id: str, role: str, principal: str
) -> policy_pb2.Policy:
    """Add a principal to certain role in project policy.

    project_id: ID or number of the Google Cloud project you want to use.
    role: role to which principal need to be added.
    principal: The principal requesting access.

    For principal ID formats, see https://cloud.google.com/iam/docs/principal-identifiers
    """
    policy = get_project_policy(project_id)

    for bind in policy.bindings:
        if bind.role == role:
            bind.members.append(principal)
            break

    return set_project_policy(project_id, policy)

REST

Edita la política de permiso devuelta añadiendo la entidad principal a una vinculación de roles. Este cambio no se aplicará hasta que defina la política de permiso actualizada.

Por ejemplo, supongamos que la política de permiso contiene el siguiente enlace de rol, que asigna el rol de revisor de seguridad (roles/iam.securityReviewer) a Kai:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/kai@example.com"
  ]
}

Para asignar ese mismo rol a Raha, añade el identificador de la cuenta principal de Raha a la vinculación de roles que ya existe:

{
  "role": "roles/iam.securityReviewer",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/kai@example.com",
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com"
  ]
}

Para conceder un rol que aún no se haya incluido en la política de permisos, añade una nueva vinculación de roles:

gcloud

Edita la política de permiso añadiendo una nueva vinculación de roles que conceda el rol al principal. Este cambio no se aplicará hasta que defina la política de permiso actualizada.

Por ejemplo, para conceder el rol Administrador de almacenamiento de Compute (roles/compute.storageAdmin) a Raha, añade el siguiente enlace de rol a la matriz bindings de la política de permiso:

{
  "role": "roles/compute.storageAdmin",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com"
  ]
}

C#

Para saber cómo instalar y usar la biblioteca de cliente de IAM, consulta Bibliotecas de cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API C# de gestión de identidades y accesos.

Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN.

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.


using System.Collections.Generic;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy AddBinding(Policy policy, string role, string member)
    {
        var binding = new Binding
        {
            Role = role,
            Members = new List<string> { member }
        };
        policy.Bindings.Add(binding);
        return policy;
    }
}

Java

Para saber cómo instalar y usar la biblioteca de cliente de IAM, consulta Bibliotecas de cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API Java de gestión de identidades y accesos.

Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN.

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.


import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.util.Collections;
import java.util.List;

public class AddBinding {
  public static void main(String[] args) {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy: GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/role-to-add";
    // TODO: Replace with your principals.
    // For examples, see https://cloud.google.com/iam/docs/principal-identifiers
    List<String> members = Collections.singletonList("principal-id");

    addBinding(policy, role, members);
  }

  // Adds a principals to a role.
  public static Policy addBinding(Policy policy, String role, List<String> members) {
    Binding binding = Binding.newBuilder()
            .setRole(role)
            .addAllMembers(members)
            .build();

    // Update bindings for the policy.
    Policy updatedPolicy = policy.toBuilder().addBindings(binding).build();

    System.out.println("Added binding: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

Python

Para saber cómo instalar y usar la biblioteca de cliente de IAM, consulta Bibliotecas de cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API Python de gestión de identidades y accesos.

Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN.

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

def modify_policy_add_role(policy: dict, role: str, principal: str) -> dict:
    """Adds a new role binding to a policy."""

    binding = {"role": role, "members": [principal]}
    policy["bindings"].append(binding)
    print(policy)
    return policy

REST

Edita la política de permiso añadiendo una nueva vinculación de roles que conceda el rol al principal. Este cambio no se aplicará hasta que defina la política de permiso actualizada.

Por ejemplo, para conceder el rol Administrador de almacenamiento de Compute (roles/compute.storageAdmin) a Raha, añade el siguiente enlace de rol a la matriz bindings de la política de permiso:

{
  "role": "roles/compute.storageAdmin",
  "members": [
    "principal://iam.googleapis.com/locations/global/workforcePools/example-pool/subject/raha@example.com"
  ]
}

Solo puedes conceder roles relacionados con servicios de API activados. Si un servicio, como Compute Engine, no está activo, no puedes conceder roles relacionados exclusivamente con Compute Engine. Para obtener más información, consulta el artículo sobre cómo habilitar e inhabilitar las APIs.

Hay algunas restricciones únicas al conceder permisos en proyectos, especialmente al conceder el rol de propietario (roles/owner). Consulta la documentación de referencia de projects.setIamPolicy() para obtener más información.

Revocar un rol de gestión de identidades y accesos

Para revocar un rol, quita la cuenta principal de la vinculación de roles. Si no hay otras cuentas principales en la vinculación de roles, elimina toda la vinculación de roles.

gcloud

Para revocar un rol, edita la política de permisos JSON o YAML devuelta por el comando get-iam-policy. Este cambio no se aplicará hasta que defina la política de permiso actualizada.

Para revocar un rol de una entidad principal, elimina la entidad principal o la vinculación de la matriz bindings de la política de permiso.

C#

Para saber cómo instalar y usar la biblioteca de cliente de IAM, consulta Bibliotecas de cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API C# de gestión de identidades y accesos.

Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN.

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.


using System.Linq;
using Google.Apis.CloudResourceManager.v1.Data;

public partial class AccessManager
{
    public static Policy RemoveMember(Policy policy, string role, string member)
    {
        try
        {
            var binding = policy.Bindings.First(x => x.Role == role);
            if (binding.Members.Count != 0 && binding.Members.Contains(member))
            {
                binding.Members.Remove(member);
            }
            if (binding.Members.Count == 0)
            {
                policy.Bindings.Remove(binding);
            }
            return policy;
        }
        catch (System.InvalidOperationException e)
        {
            System.Diagnostics.Debug.WriteLine("Role does not exist in policy: \n" + e.ToString());
            return policy;
        }
    }
}

Go

Para saber cómo instalar y usar la biblioteca de cliente de IAM, consulta Bibliotecas de cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API Go de gestión de identidades y accesos.

Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN.

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

import (
	"fmt"
	"io"

	"google.golang.org/api/iam/v1"
)

// removeMember removes a member from a role binding.
func removeMember(w io.Writer, policy *iam.Policy, role, member string) {
	bindings := policy.Bindings
	bindingIndex, memberIndex := -1, -1
	for bIdx := range bindings {
		if bindings[bIdx].Role != role {
			continue
		}
		bindingIndex = bIdx
		for mIdx := range bindings[bindingIndex].Members {
			if bindings[bindingIndex].Members[mIdx] != member {
				continue
			}
			memberIndex = mIdx
			break
		}
	}
	if bindingIndex == -1 {
		fmt.Fprintf(w, "Role %q not found. Member not removed.\n", role)
		return
	}
	if memberIndex == -1 {
		fmt.Fprintf(w, "Role %q found. Member not found.\n", role)
		return
	}

	members := removeIdx(bindings[bindingIndex].Members, memberIndex)
	bindings[bindingIndex].Members = members
	if len(members) == 0 {
		bindings = removeIdx(bindings, bindingIndex)
		policy.Bindings = bindings
	}
	fmt.Fprintf(w, "Role %q found. Member removed.\n", role)
}

// removeIdx removes arr[idx] from arr.
func removeIdx[T any](arr []T, idx int) []T {
	return append(arr[:idx], arr[idx+1:]...)
}

Java

Para saber cómo instalar y usar la biblioteca de cliente de IAM, consulta Bibliotecas de cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API Java de gestión de identidades y accesos.

Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN.

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

import com.google.iam.v1.Binding;
import com.google.iam.v1.Policy;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class RemoveMember {
  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace the variables before running the sample.
    // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
    Policy policy = Policy.newBuilder().build();
    // TODO: Replace with your role.
    String role = "roles/existing-role";
    // TODO: Replace with your principal.
    // For examples, see https://cloud.google.com/iam/docs/principal-identifiers
    String member = "principal-id";

    removeMember(policy, role, member);
  }

  // Removes principal from a role; removes binding if binding contains no members.
  public static Policy removeMember(Policy policy, String role, String member) {
    // Creating new builder with all values copied from origin policy
    Policy.Builder policyBuilder = policy.toBuilder();

    // Getting binding with suitable role.
    Binding binding = null;
    for (Binding b : policy.getBindingsList()) {
      if (b.getRole().equals(role)) {
        binding = b;
        break;
      }
    }

    if (binding != null && binding.getMembersList().contains(member)) {
      List<String> newMemberList = new ArrayList<>(binding.getMembersList());
      // Removing principal from the role
      newMemberList.remove(member);

      System.out.println("Member " + member + " removed from " + role);

      // Adding all remaining principals to create new binding
      Binding newBinding = binding.toBuilder()
              .clearMembers()
              .addAllMembers(newMemberList)
              .build();

      List<Binding> newBindingList = new ArrayList<>(policyBuilder.getBindingsList());

      // Removing old binding to replace with new one
      newBindingList.remove(binding);

      // If binding has no more members, binding will not be added
      if (!newBinding.getMembersList().isEmpty()) {
        newBindingList.add(newBinding);
      }

      // Update the policy to remove the principal.
      policyBuilder.clearBindings()
              .addAllBindings(newBindingList);
    }

    Policy updatedPolicy = policyBuilder.build();

    System.out.println("Exising principals: " + updatedPolicy.getBindingsList());

    return updatedPolicy;
  }
}

Python

Para saber cómo instalar y usar la biblioteca de cliente de IAM, consulta Bibliotecas de cliente de IAM. Para obtener más información, consulta la documentación de referencia de la API Python de gestión de identidades y accesos.

Para autenticarte en IAM, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Antes de ejecutar los ejemplos de código, asigna el valor s3nsapis.fr a la variable de entorno GOOGLE_CLOUD_UNIVERSE_DOMAIN.

Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

from google.iam.v1 import policy_pb2
from snippets.get_policy import get_project_policy
from snippets.set_policy import set_project_policy


def modify_policy_remove_principal(
    project_id: str, role: str, principal: str
) -> policy_pb2.Policy:
    """Remove a principal from certain role in project policy.

    project_id: ID or number of the Google Cloud project you want to use.
    role: role to revoke.
    principal: The principal to revoke access from.

    For principal ID formats, see https://cloud.google.com/iam/docs/principal-identifiers
    """
    policy = get_project_policy(project_id)

    for bind in policy.bindings:
        if bind.role == role:
            if principal in bind.members:
                bind.members.remove(principal)
            break

    return set_project_policy(project_id, policy, False)

REST

Para revocar un rol, edita la política de permisos JSON o YAML devuelta por el comando get-iam-policy. Este cambio no se aplicará hasta que defina la política de permiso actualizada.

Para revocar un rol de una entidad principal, elimina la entidad principal o la vinculación de la matriz bindings de la política de permiso.

Definir la política de permitir

Cuando hayas modificado la política de permisos para asignar y revocar roles, llama a setIamPolicy() para actualizar la política.

gcloud

  1. In the Trusted Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Trusted Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Para definir la política de permiso del recurso, ejecuta el comando set-iam-policy del recurso:

    gcloud RESOURCE_TYPE set-iam-policy RESOURCE_ID PATH

    Proporciona los siguientes valores:

    • RESOURCE_TYPE: el tipo de recurso para el que quieres definir la política de permiso. Usa uno de los siguientes valores: projects, resource-manager folders o organizations.

    • RESOURCE_ID: ID de tu Trusted Cloud proyecto, carpeta u organización. Los IDs de proyecto son alfanuméricos, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.

    • PATH: ruta a un archivo que contiene la nueva política de permiso.

    La respuesta contiene la política de permiso actualizada.

    Por ejemplo, el siguiente comando define la política de permiso almacenada en policy.json como la política de permiso del proyecto my-project:

    gcloud projects set-iam-policy my-project ~/policy.json
  3. C#

    
    using Google.Apis.Auth.OAuth2;
    using Google.Apis.CloudResourceManager.v1;
    using Google.Apis.CloudResourceManager.v1.Data;
    
    public partial class AccessManager
    {
        public static Policy SetPolicy(string projectId, Policy policy)
        {
            var credential = GoogleCredential.GetApplicationDefault()
                .CreateScoped(CloudResourceManagerService.Scope.CloudPlatform);
            var service = new CloudResourceManagerService(
                new CloudResourceManagerService.Initializer
                {
                    HttpClientInitializer = credential
                });
    
            return service.Projects.SetIamPolicy(new SetIamPolicyRequest
            {
                Policy = policy
            }, projectId).Execute();
        }
    }
    

    Java

    Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

    Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

    En el siguiente ejemplo se muestra cómo definir la política de permiso de un proyecto. Para saber cómo definir la política de permiso de una carpeta o una organización, consulta la documentación de la biblioteca de cliente de Resource Manager de tu lenguaje de programación.

    import com.google.cloud.resourcemanager.v3.ProjectsClient;
    import com.google.iam.admin.v1.ProjectName;
    import com.google.iam.v1.Policy;
    import com.google.iam.v1.SetIamPolicyRequest;
    import com.google.protobuf.FieldMask;
    import java.io.IOException;
    import java.util.Arrays;
    import java.util.List;
    
    public class SetProjectPolicy {
      public static void main(String[] args) throws IOException {
        // TODO(developer): Replace the variables before running the sample.
        // TODO: Replace with your project ID.
        String projectId = "your-project-id";
        // TODO: Replace with your policy, GetPolicy.getPolicy(projectId, serviceAccount).
        Policy policy = Policy.newBuilder().build();
    
        setProjectPolicy(policy, projectId);
      }
    
      // Sets a project's policy.
      public static Policy setProjectPolicy(Policy policy, String projectId)
              throws IOException {
    
        // Initialize client that will be used to send requests.
        // This client only needs to be created once, and can be reused for multiple requests.
        try (ProjectsClient projectsClient = ProjectsClient.create()) {
          List<String> paths = Arrays.asList("bindings", "etag");
          SetIamPolicyRequest request = SetIamPolicyRequest.newBuilder()
                  .setResource(ProjectName.of(projectId).toString())
                  .setPolicy(policy)
                  // A FieldMask specifying which fields of the policy to modify. Only
                  // the fields in the mask will be modified. If no mask is provided, the
                  // following default mask is used:
                  // `paths: "bindings, etag"`
                  .setUpdateMask(FieldMask.newBuilder().addAllPaths(paths).build())
                  .build();
    
          return projectsClient.setIamPolicy(request);
        }
      }
    }

    Python

    Para autenticarte en Resource Manager, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta la sección Antes de empezar.

    Para saber cómo instalar y usar la biblioteca de cliente de Resource Manager, consulta el artículo sobre las bibliotecas de cliente de Resource Manager.

    En el siguiente ejemplo se muestra cómo definir la política de permiso de un proyecto. Para saber cómo definir la política de permiso de una carpeta o una organización, consulta la documentación de la biblioteca de cliente de Resource Manager de tu lenguaje de programación.

    from google.cloud import resourcemanager_v3
    from google.iam.v1 import iam_policy_pb2, policy_pb2
    
    
    def set_project_policy(
        project_id: str, policy: policy_pb2.Policy, merge: bool = True
    ) -> policy_pb2.Policy:
        """
        Set policy for project. Pay attention that previous state will be completely rewritten.
        If you want to update only part of the policy follow the approach read->modify->write.
        For more details about policies check out https://cloud.google.com/iam/docs/policies
    
        project_id: ID or number of the Google Cloud project you want to use.
        policy: Policy which has to be set.
        merge: The strategy to be used forming the request. CopyFrom is clearing both mutable and immutable fields,
        when MergeFrom is replacing only immutable fields and extending mutable.
        https://googleapis.dev/python/protobuf/latest/google/protobuf/message.html#google.protobuf.message.Message.CopyFrom
        """
        client = resourcemanager_v3.ProjectsClient()
    
        request = iam_policy_pb2.GetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
        current_policy = client.get_iam_policy(request)
    
        # Etag should as fresh as possible to lower chance of collisions
        policy.ClearField("etag")
        if merge:
            current_policy.MergeFrom(policy)
        else:
            current_policy.CopyFrom(policy)
    
        request = iam_policy_pb2.SetIamPolicyRequest()
        request.resource = f"projects/{project_id}"
    
        # request.etag field also will be merged which means you are secured from collision,
        # but it means that request may fail and you need to leverage exponential retries approach
        # to be sure policy has been updated.
        request.policy.CopyFrom(current_policy)
    
        policy = client.set_iam_policy(request)
        return policy
    
    

    REST

    El método setIamPolicy de la API Resource Manager define la política de la solicitud como la nueva política de permiso del proyecto, la carpeta o la organización.

    Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

    • API_VERSION: la versión de la API que se va a usar. Para proyectos y organizaciones, usa v1. En el caso de las carpetas, usa v2.
    • RESOURCE_TYPE: el tipo de recurso cuya política quieres gestionar. Usa el valor projects, folders o organizations.
    • RESOURCE_ID: ID de tu Trusted Cloud proyecto, organización o carpeta. Los IDs de proyecto son cadenas alfanuméricas, como my-project. Los IDs de carpetas y organizaciones son numéricos, como 123456789012.
    • POLICY: representación JSON de la política que quieres definir. Para obtener más información sobre el formato de una política, consulta la referencia de la política.

    Método HTTP y URL:

    POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:setIamPolicy

    Cuerpo JSON de la solicitud:

    {
      "policy": POLICY
    }
    

    Para enviar tu solicitud, despliega una de estas opciones:

    La respuesta contiene la política de permiso actualizada.

Siguientes pasos