Configura y administra políticas de IAM en carpetas administradas

En esta página, se describe cómo configurar políticas de administración de identidades y accesos (IAM) en carpetas administradas, de modo que puedas obtener un control de acceso detallado sobre grupos específicos de objetos dentro de un bucket.

Si buscas otros métodos de control de acceso, consulta los siguientes recursos:

Roles obligatorios

Si quieres obtener los permisos que necesitas para configurar y administrar las políticas de IAM de las carpetas administradas, debes pedirle a tu administrador que te otorgue el rol de IAM de Administrador de carpetas de almacenamiento (roles/storage.folderAdmin) del bucket que contiene las carpetas administradas.

Esta función contiene los siguientes permisos, que son necesarios para configurar y administrar las políticas de IAM para las carpetas administradas:

  • storage.managedfolders.getIamPolicy

  • storage.managedfolders.setIamPolicy

También puedes obtener estos permisos con roles personalizados.

Para obtener más información sobre cómo otorgar roles a los buckets, consulta Configura y administra políticas de IAM en buckets.

Configura una política de IAM en una carpeta administrada

Console

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket que contiene la carpeta administrada en la que deseas establecer una política de IAM.

  3. En la página Detalles del bucket , haz clic en el ícono Más opciones en el panel Folder browser junto a la carpeta administrada en la que deseas establecer una política de IAM.

    Si la carpeta para la que deseas controlar el acceso es una carpeta simulada, sigue los pasos que se indican en Crea una carpeta administrada para convertir primero la carpeta simulada en una administrada.

  4. Haz clic en acceso de edición.

  5. En el panel Permissions for MANAGED_FOLDER_NAME, haz clic en Agregar principal .

  6. En el campo Principales nuevas, ingresa la principal a la que deseas otorgar acceso. Para obtener más información sobre los principales que puedes incluir, consulta Identificadores de principal.

  7. En la sección Asignar roles, usa el menú desplegable Seleccionar un rol para especificar el nivel de acceso que deseas otorgar a la principal.

  8. Haz clic en Guardar.

Línea de comandos

  1. Crea un archivo JSON que contenga la siguiente información:

    {
      "bindings":[
        {
          "role": "IAM_ROLE",
          "members":[
            "PRINCIPAL_IDENTIFIER"
          ]
        }
      ]
    }

    Aquí:

    • IAM_ROLE es el rol de IAM que deseas otorgar. Por ejemplo, roles/storage.objectViewer.

    • PRINCIPAL_IDENTIFIER identifica a quién le otorgas acceso a la carpeta administrada. Por ejemplo, user:jane@gmail.com Para obtener una lista de los formatos de identificador principal, consulta Identificadores principales.

  2. Usa el comando gcloud storage managed-folders set-iam-policy:

    gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME POLICY_FILE

    Aquí:

    • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada a la que deseas aplicar la política de IAM. Por ejemplo, my-bucket

    • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada a la que deseas aplicar la política de IAM. Por ejemplo, my-managed-folder/.

    • POLICY_FILE es la ruta de acceso al archivo JSON que creaste en el paso 1.

API de REST

JSON

  1. Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado Authorization.

    Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado Authorization.

  2. Crea un archivo JSON que contenga la siguiente información:

    {
      "bindings":[
        {
          "role": "IAM_ROLE",
          "members":[
            "PRINCIPAL_IDENTIFIER"
          ]
        }
      ]
    }

    Aquí:

    • IAM_ROLE es el rol de IAM que deseas otorgar. Por ejemplo, roles/storage.objectViewer.

    • PRINCIPAL_IDENTIFIER identifica a quién le otorgas acceso a la carpeta administrada. Por ejemplo, user:jane@gmail.com Para obtener una lista de los formatos de identificador principal, consulta Identificadores de principal.

  3. Usa cURL para llamar a la API de JSON con una solicitud PUT setIamPolicy:

    curl -X PUT --data-binary @POLICY_FILE \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    Aquí:

    • POLICY_FILE es la ruta al archivo de política JSON que creaste en el paso anterior.

    • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada a la que deseas aplicar la política de IAM. Por ejemplo, my-bucket

    • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada a la que le quieres otorgar acceso a la principal. Por ejemplo, my-managed-folder/

Visualiza la política de IAM para una carpeta administrada

Console

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket que contiene la carpeta administrada para la que deseas ver las políticas de IAM.

  3. En la página Detalles del bucket , haz clic en el ícono Más opciones en el panel Folder browser junto a la carpeta administrada para la que deseas ver la política de IAM.

  4. Haz clic en acceso de edición.

En el panel Permissions for FOLDER_NAME, se muestran los permisos de la carpeta administrada, incluidos la principal, el rol, los roles heredados y las condiciones de IAM.

Línea de comandos

Usa el comando gcloud storage managed-folder get-iam-policy:

gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME

Aquí:

  • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada cuya política de IAM deseas ver. Por ejemplo, my-bucket

  • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada cuya política de IAM deseas ver. Por ejemplo, my-managed-folder/

API de REST

JSON

  1. Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado Authorization.

    Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado Authorization.

  2. Usa cURL para llamar a la API de JSON con una solicitud GET getIamPolicy:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    Aquí:

    • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada cuya política de IAM deseas ver. Por ejemplo, my-bucket

    • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada cuya política de IAM deseas ver. Por ejemplo, my-managed-folder/.

Quita una principal de una política de carpeta administrada

Console

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. En la lista de buckets, haz clic en el nombre del bucket que contiene la carpeta administrada para la que deseas ver las políticas de IAM.

  3. En la página Detalles del bucket , haz clic en el ícono Más opciones en el panel Folder browser junto al carpeta administrada para la que deseas quitar una principal.

  4. Haz clic en acceso de edición.

  5. En el panel Permissions for FOLDER_NAME, ingresa el nombre de la principal en el campo Filtro.

  6. Haz clic en el ícono Borrar para borrar la principal.

Cloud Storage borra la principal de tu carpeta administrada.

Línea de comandos

Usa el comando gcloud storage managed-folder remove-iam-policy-binding:

gcloud storage managed-folders remove-iam-policy-binding  gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE

Aquí:

  • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada a la que le revocas el acceso. Por ejemplo, my-bucket.

  • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada cuya política de IAM deseas quitar. Por ejemplo, my-managed-folder/.

  • PRINCIPAL_IDENTIFIER identifica a quién le revocas el acceso. Por ejemplo, user:jane@gmail.com Para obtener una lista de los formatos de identificador principal, consulta Identificadores de principal.

  • IAM_ROLE es el rol de IAM que estás revocando. Por ejemplo, roles/storage.objectViewer.

API de REST

JSON

  1. Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado Authorization.

    Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado Authorization.

  2. Obtén la política existente aplicada a tu carpeta administrada. Para ello, usa cURL para llamar a la API de JSON con una solicitud GET getIamPolicy:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    Aquí:

    • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada a la que le revocas el acceso. Por ejemplo, my-bucket.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada cuya política de IAM deseas quitar. Por ejemplo, my-managed-folder/.

  3. Crea un archivo JSON que contenga la política que recuperaste en el paso anterior.

  4. Edita el archivo JSON para quitar al miembro de la política.

  5. Usa cURL para llamar a la API de JSON con una solicitud PUT setIamPolicy:

    curl -X PUT --data-binary @JSON_FILE_NAME \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    Aquí:

    • JSON_FILE_NAME es la ruta de acceso del archivo que creaste en el paso 3.

    • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada a la que le revocas el acceso. Por ejemplo, my-bucket

    • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada cuya política de IAM deseas quitar. Por ejemplo, my-managed-folder/

Usa condiciones de IAM en carpetas administradas

En las siguientes secciones, se muestra cómo agregar y quitar condiciones de IAM en las carpetas administradas. Si deseas ver las condiciones de IAM para tus carpetas administradas, consulta Visualiza la política de IAM para una carpeta administrada. Si quieres obtener más información acerca del uso de las Condiciones de IAM con Cloud Storage, consulta Condiciones.

Debes habilitar el acceso uniforme a nivel del bucket en el bucket antes de agregar condiciones a las carpetas administradas.

Establece una nueva condición en una carpeta administrada

Línea de comandos

  1. Crea un archivo JSON o YAML que defina la condición, incluido el title de la condición, la expression lógica basada en atributos para la condición y, de forma opcional, , una description de la condición.

    Ten en cuenta que Cloud Storage solo admite los atributos de fecha/hora ,tipo de recurso y nombre del recurso en el expression.

  2. Usa el comando gcloud storage managed-folders add-iam-policy-binding con la marca --condition-from-file:

gcloud storage managed-folders add-iam-policy-binding  gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE

Aquí:

  • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada a la que le otorgas acceso a la principal. Por ejemplo, my-bucket.

  • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada a la que le otorgas acceso a la principal. Por ejemplo, my-managed-folder/.

  • PRINCIPAL_IDENTIFIER identifica a quién se aplica la condición. Por ejemplo, user:jane@gmail.com Para obtener una lista de los formatos de identificador principal, consulta Identificadores principales.

  • IAM_ROLE es el rol de IAM que le estás otorgando a la principal. Por ejemplo, roles/storage.objectViewer.

  • CONDITION_FILE es el archivo que creaste en el paso anterior.

Como alternativa, puedes incluir la condición de forma directa en el comando con la marca --condition en lugar de la marca --condition-from-file.

API de REST

JSON

  1. Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado Authorization.

    Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado Authorization.

  2. Usa una solicitud GET getIamPolicy para guardar la política de IAM de la carpeta administrada en un archivo JSON temporal:

    curl \
    'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \
    --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json

    Aquí:

    • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada en la que deseas establecer una condición de IAM.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada en la que deseas establecer una condición de IAM.

  3. Edita el archivo tmp-policy.json en un editor de texto para agregar condiciones nuevas a las vinculaciones en la política de IAM:

    {
        "version": VERSION,
        "bindings": [
          {
            "role": "IAM_ROLE",
            "members": [
              "PRINCIPAL_IDENTIFIER"
            ],
            "condition": {
              "title": "TITLE",
              "description": "DESCRIPTION",
              "expression": "EXPRESSION"
            }
          }
        ],
        "etag": "ETAG"
    }

    Aquí:

    • VERSION es la versión de la política de IAM, que debe ser 3 para las carpetas administradas con condiciones de IAM.

    • IAM_ROLE es la función a la que se aplica la condición. Por ejemplo, roles/storage.objectViewer

    • PRINCIPAL_IDENTIFIER identifica a quién se aplica la condición. Por ejemplo, user:jane@gmail.com Para obtener una lista de los formatos de identificador principal, consulta Identificadores de principal.

    • TITLE es el título de la condición. Por ejemplo, expires in 2019.

    • DESCRIPTION es una descripción opcional de la condición. Por ejemplo, Permission revoked on New Year's

    • EXPRESSION es una expresión lógica basada en atributos. Por ejemplo, request.time < timestamp(\"2019-01-01T00:00:00Z\"). Si quieres obtener más ejemplos de expresiones, consulta la referencia de atributos para las Condiciones. Cloud Storage solo admite los atributos de fecha y hora, tipo de recurso y nombre de recurso.

    No modifiques ETAG.

  4. Usa una solicitud PUT setIamPolicy para establecer la política de IAM modificada en el bucket:

    curl -X PUT --data-binary @tmp-policy.json \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFoldersMANAGED_FOLDER_NAME/iam"

    Aquí:

    • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada en la que deseas establecer una condición de IAM.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada en la que deseas establecer una condición de IAM.

Quita una condición de una carpeta administrada

Línea de comandos

  1. Usa el comando gcloud storage managed-folders get-iam-policy para guardar la política de IAM de la carpeta administrada en un archivo JSON temporal.

    gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME > tmp-policy.json
  2. Edita el archivo tmp-policy.json en un editor de texto para quitar las condiciones de la política de IAM.

  3. Usa el comando gcloud storage managed-folders set-iam-policy para establecer la política de IAM modificada en la carpeta administrada.

    gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME tmp-policy.json

API de REST

JSON

  1. Tener la gcloud CLI instalada e inicializadaa fin de generar un token de acceso para el encabezado Authorization.

    Como alternativa, puedes crear un token de acceso con OAuth 2.0 Playground y, luego, incluirlo en el encabezado Authorization.

  2. Usa una solicitud GET getIamPolicy para guardar la política de IAM de la carpeta administrada en un archivo JSON temporal:

    curl \
    'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \
    --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json

    Aquí:

    • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada a la que le cambias el acceso. Por ejemplo, my-bucket.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada a la que le cambias el acceso. Por ejemplo, my-managed-folder/

  3. Edita el archivo tmp-policy.json en un editor de texto para quitar las condiciones de la política de IAM.

  4. Usa una solicitud PUT setIamPolicy para establecer la política de IAM modificada en la carpeta administrada:

    curl -X PUT --data-binary @tmp-policy.json \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam"

    Aquí:

    • BUCKET_NAME es el nombre del bucket que contiene la carpeta administrada a la que le cambias el acceso. Por ejemplo, my-bucket.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta administrada a la que le cambias el acceso. Por ejemplo, my-managed-folder/.

Usa IAM con proyectos

Consulta Administra el acceso a proyectos, carpetas y organizaciones para obtener guías sobre cómo otorgar y revocar roles de IAM a nivel de proyecto y superior.

Prácticas recomendadas

Debes establecer el mínimo rol posible que otorgue al principal el acceso requerido. Por ejemplo, si un miembro del equipo solo necesita ver las carpetas administradas de un bucket, otórgale el Administrador de objetos de almacenamiento (roles/storage.objectAdmin ) en lugar del rol de Administrador de carpetas de almacenamiento (roles/storage.folderAdmin ). Del mismo modo, si el miembro del equipo necesita el control total de las carpetas administradas en un bucket, otórgale el rol de Administrador de carpetas de almacenamiento (roles/storage.folderAdmin) en lugar del rol de Administrador de almacenamiento (roles/storage.admin).

¿Qué sigue?