Definir y gestionar políticas de gestión de identidades y accesos en carpetas gestionadas

En esta página se describe cómo definir políticas de Gestión de Identidades y Accesos (IAM) en carpetas gestionadas para obtener un control de acceso pormenorizado sobre grupos de objetos específicos de un segmento.

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

Roles obligatorios

Para obtener los permisos que necesitas para definir y gestionar las políticas de gestión de identidades y accesos de las carpetas gestionadas, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Administrador de carpetas de almacenamiento (roles/storage.folderAdmin) del segmento que contiene las carpetas gestionadas.

Este rol contiene los siguientes permisos, que son necesarios para definir y gestionar políticas de gestión de identidades y accesos de carpetas gestionadas:

  • storage.managedFolders.getIamPolicy

  • storage.managedFolders.setIamPolicy

También puedes obtener estos permisos con roles personalizados.

Para obtener información sobre cómo conceder roles a los segmentos, consulta Definir y gestionar políticas de IAM en segmentos.

Definir una política de gestión de identidades y accesos en una carpeta gestionada

Consola

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

    Ir a Contenedores

  2. En la lista de segmentos, haga clic en el nombre del segmento que contiene la carpeta gestionada en la que quiere definir una política de IAM.

  3. En la página Detalles del bucket, haga clic en el icono Más opciones en el panel Explorador de carpetas, situado junto a la carpeta gestionada en la que quiera definir una política de gestión de identidades y accesos.

    Si quieres controlar el acceso a una carpeta o a una carpeta simulada, sigue los pasos que se indican en el artículo Crear una carpeta gestionada para habilitar la gestión en la carpeta o en la carpeta simulada.

  4. Haz clic en Editar acceso.

  5. En el panel Permisos de MANAGED_FOLDER_NAME, haz clic en Añadir principal .

  6. En el campo New principals (Nuevos principales), introduce el principal al que quieras conceder acceso. Para obtener más información sobre los principales que puedes incluir, consulta Identificadores principales.

  7. En la sección Asignar roles, usa el desplegable Seleccionar un rol para especificar el nivel de acceso que quieras conceder a la entidad de seguridad.

  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"
          ]
        }
      ]
    }

    Donde:

    • IAM_ROLE es el rol de gestión de identidades y accesos que vas a conceder. Por ejemplo, roles/storage.objectViewer.

    • PRINCIPAL_IDENTIFIER identifica a quién le das acceso a la carpeta gestionada. Por ejemplo, user:jeffersonloveshiking@gmail.com. Para ver una lista de formatos de identificadores principales, 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

    Donde:

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

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

    • POLICY_FILE es la ruta al archivo JSON que has creado en el paso 1.

APIs REST

JSON

  1. Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado Authorization.

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

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

    Donde:

  3. Usa cURL para llamar a la API 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"

    Donde:

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

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

    • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada a la que quieres dar acceso al principal. Por ejemplo, my-managed-folder/.

Ver la política de gestión de identidades y accesos de una carpeta gestionada

Consola

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

    Ir a Contenedores

  2. En la lista de segmentos, haga clic en el nombre del segmento que contiene la carpeta gestionada de la que quiere ver las políticas de gestión de identidades y accesos.

  3. En la página Detalles del bucket, haga clic en el icono Más opciones en el panel Explorador de carpetas, junto a la carpeta gestionada de la que quiera ver la política de IAM.

  4. Haz clic en Editar acceso.

En el panel Permisos de FOLDER_NAME se muestran los permisos de la carpeta gestionada, incluidos la entidad principal, el rol, los roles heredados y las condiciones de gestión de identidades y accesos.

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

Donde:

  • BUCKET_NAME es el nombre del segmento que contiene la carpeta gestionada cuya política de IAM quieres consultar. Por ejemplo, my-bucket.

  • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada cuya política de gestión de identidades y accesos quieres ver. Por ejemplo, my-managed-folder/.

APIs REST

JSON

  1. Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado Authorization.

  2. Usa cURL para llamar a la API 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"

    Donde:

    • BUCKET_NAME es el nombre del segmento que contiene la carpeta gestionada cuya política de gestión de identidades y accesos quieres ver. Por ejemplo, my-bucket.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada cuya política de gestión de identidades y accesos quieres ver. Por ejemplo, my-managed-folder/.

Quitar un principal de una política de carpetas gestionadas

Consola

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

    Ir a Contenedores

  2. En la lista de segmentos, haga clic en el nombre del segmento que contiene la carpeta gestionada de la que quiere ver las políticas de gestión de identidades y accesos.

  3. En la página Detalles del contenedor, haga clic en el icono Más opciones en el panel Explorador de carpetas situado junto a la carpeta gestionada de la que quiera quitar un principal.

  4. Haz clic en Editar acceso.

  5. En el panel Permisos de FOLDER_NAME, introduce el nombre de la cuenta principal en el campo Filtro.

  6. Haga clic en el icono Eliminar para eliminar la entidad de seguridad.

Cloud Storage elimina la entidad de tu carpeta gestionada.

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

Donde:

  • BUCKET_NAME es el nombre del segmento que contiene la carpeta gestionada a la que vas a revocar el acceso. Por ejemplo, my-bucket.

  • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada cuya política de IAM quieres eliminar. Por ejemplo, my-managed-folder/.

  • PRINCIPAL_IDENTIFIER identifica a quién le vas a revocar el acceso. Por ejemplo, user:jeffersonloveshiking@gmail.com. Para ver una lista de formatos de identificadores principales, consulta Identificadores principales.

  • IAM_ROLE es el rol de gestión de identidades y accesos que vas a revocar. Por ejemplo, roles/storage.objectViewer.

APIs REST

JSON

  1. Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado Authorization.

  2. Obtén la política que se ha aplicado a tu carpeta gestionada. Para ello, usa cURL para llamar a la API 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"

    Donde:

    • BUCKET_NAME es el nombre del segmento que contiene la carpeta gestionada a la que vas a revocar el acceso. Por ejemplo, my-bucket.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada cuya política de IAM quieres eliminar. Por ejemplo, my-managed-folder/.

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

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

  5. Usa cURL para llamar a la API 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"

    Donde:

    • JSON_FILE_NAME es la ruta del archivo que has creado en el paso 3.

    • BUCKET_NAME es el nombre del segmento que contiene la carpeta gestionada a la que vas a revocar el acceso. Por ejemplo, my-bucket.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada cuya política de IAM quieres eliminar. Por ejemplo, my-managed-folder/.

Usar condiciones de gestión de identidades y accesos en carpetas gestionadas

En las siguientes secciones se explica cómo añadir y quitar condiciones de gestión de identidades y accesos en tus carpetas gestionadas. Para ver las condiciones de gestión de identidades y accesos de tus carpetas gestionadas, consulta Ver la política de gestión de identidades y accesos de una carpeta gestionada. Para obtener más información sobre cómo usar las condiciones de gestión de identidades y accesos con Cloud Storage, consulta Condiciones.

Debes habilitar el acceso uniforme a nivel de segmento en el segmento antes de añadir condiciones a las carpetas gestionadas.

Definir una nueva condición en una carpeta gestionada

Línea de comandos

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

    Ten en cuenta que Cloud Storage solo admite los atributos fecha/hora, tipo de recurso y nombre de recurso en 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

Donde:

  • BUCKET_NAME es el nombre del segmento que contiene la carpeta gestionada a la que quieres dar acceso al principal. Por ejemplo, my-bucket.

  • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada a la que vas a conceder acceso al principal. Por ejemplo, my-managed-folder/.

  • PRINCIPAL_IDENTIFIER identifica a quién se aplica la condición. Por ejemplo, user:jeffersonloveshiking@gmail.com. Para ver una lista de formatos de identificadores principales, consulta Identificadores principales.

  • IAM_ROLE es el rol de gestión de identidades y accesos que vas a conceder a la entidad principal. Por ejemplo, roles/storage.objectViewer.

  • CONDITION_FILE es el archivo que has creado en el paso anterior.

También puedes incluir la condición directamente en el comando con la marca --condition en lugar de la marca --condition-from-file.

APIs REST

JSON

  1. Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado Authorization.

  2. Usa una solicitud GET getIamPolicy para guardar la política de IAM de la carpeta gestionada 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

    Donde:

    • BUCKET_NAME es el nombre del segmento que contiene la carpeta gestionada en la que quieres definir una condición de gestión de identidades y accesos.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada en la que quieres definir una condición de IAM.

  3. Edita el archivo tmp-policy.json en un editor de texto para añadir nuevas condiciones a las vinculaciones de la política de gestión de identidades y accesos:

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

    Donde:

    • VERSION es la versión de la política de gestión de identidades y accesos, que debe ser 3 para las carpetas gestionadas con condiciones de gestión de identidades y accesos.

    • IAM_ROLE es el rol al 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:jeffersonloveshiking@gmail.com. Para ver una lista de los formatos de identificadores principales, consulta Identificadores principales.

    • 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\"). Para ver más ejemplos de expresiones, consulta la referencia de atributos de condiciones. Cloud Storage solo admite los atributos fecha/hora, tipo de recurso y nombre de recurso.

    No modifiques ETAG.

  4. Usa una solicitud PUT setIamPolicy para definir la política de gestión de identidades y accesos modificada en el segmento:

    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"

    Donde:

    • BUCKET_NAME es el nombre del segmento que contiene la carpeta gestionada en la que quieres definir una condición de gestión de identidades y accesos.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada en la que quieres definir una condición de IAM.

Quitar una condición de una carpeta gestionada

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 gestionada 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 gestión de identidades y accesos.

  3. Usa el comando gcloud storage managed-folders set-iam-policy para definir la política de gestión de identidades y accesos modificada en la carpeta gestionada.

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

APIs REST

JSON

  1. Tener instalada e inicializadala CLI de gcloud, que te permite generar un token de acceso para el encabezado Authorization.

  2. Usa una solicitud GET getIamPolicy para guardar la política de IAM de la carpeta gestionada 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

    Donde:

    • BUCKET_NAME es el nombre del segmento que contiene la carpeta gestionada cuyo acceso estás cambiando. Por ejemplo, my-bucket.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada a la que estás cambiando 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 gestión de identidades y accesos.

  4. Usa una solicitud PUT setIamPolicy para definir la política de gestión de identidades y accesos modificada en la carpeta gestionada:

    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"

    Donde:

    • BUCKET_NAME es el nombre del segmento que contiene la carpeta gestionada cuyo acceso estás cambiando. Por ejemplo, my-bucket.

    • MANAGED_FOLDER_NAME es el nombre de la carpeta gestionada a la que estás cambiando el acceso. Por ejemplo, my-managed-folder/.

Usar la gestión de identidades y accesos con proyectos

Consulta Gestionar el acceso a proyectos, carpetas gestionadas y organizaciones para obtener guías sobre cómo asignar y revocar roles de gestión de identidades y accesos a nivel de proyecto y superior.

Prácticas recomendadas

Debe asignar el rol mínimo posible que proporcione al principal el acceso necesario. Por ejemplo, si un miembro del equipo solo necesita ver las carpetas gestionadas de un contenedor, concédele el rol Administrador de objetos de Storage (roles/storage.objectAdmin) en lugar del rol Administrador de carpetas de Storage (roles/storage.folderAdmin). Del mismo modo, si el miembro del equipo necesita tener control total sobre las carpetas gestionadas de un bucket, concédele el rol Administrador de carpetas de Storage (roles/storage.folderAdmin) en lugar del rol Administrador de Storage (roles/storage.admin).

Siguientes pasos