Autoriza el acceso con la IAM

Usas Identity and Access Management (IAM) para autorizar identidades para realizar acciones administrativas en funciones creadas con la API de Cloud Functions v2, por ejemplo, con gcloud functions, la API de REST o Terraform. Las acciones de administración incluyen la creación, actualización y eliminación de funciones. Para obtener información sobre el acceso a IAM para las funciones creadas con Cloud Run, consulta Control de acceso con IAM.

En IAM, otorgas a las principales (las identidades que deseas habilitar, por lo general, un correo electrónico de cuenta de servicio o de usuario) los roles de IAM adecuados en la función o el proyecto. Estos roles incluyen permisos que definen las acciones que la principal puede realizar.

Antes de comenzar

Para obtener el permiso que necesitas para controlar el acceso a una función específica o a todas las funciones de un proyecto, pídele a tu administrador que te otorgue el rol de IAM de Administrador de Cloud Functions (roles/roles/cloudfunctions.admin) en la función o el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene el permiso cloudfunctions.functions.setIamPolicy, que se requiere para controlar el acceso de una función específica o todas las funciones de un proyecto.

También puedes obtener este permiso con roles personalizados o con otros roles predefinidos.

Consulta los roles de IAM de Cloud Functions para ver la lista completa de los roles y los permisos asociados con estos.

Habilita el acceso a una función

Para controlar las acciones en una función, puedes asignar roles a las identidades individuales, o restringirlos, a través de IAM.

Agrega principales y otorga roles

Usa el comando gcloud functions add-iam-policy-binding:

gcloud functions add-iam-policy-binding FUNCTION_NAME \
  --member=PRINCIPAL_ID \
  --role=ROLE
 

En el comando anterior, FUNCTION_NAME es el nombre de la función, PRINCIPAL_ID es el identificador de la principal, por lo general, un correo electrónico, y ROLE es el rol.

Para obtener una lista de las fuentes que pueden proporcionar un PRINCIPAL_ID, consulta Identificadores de principal. Para obtener una lista de valores aceptables para ROLE, consulta la página de referencia de roles de IAM.

Quita funciones de las principales

Usa el comando gcloud functions remove-iam-policy-binding:

gcloud functions remove-iam-policy-binding FUNCTION_NAME \
  --member=PRINCIPAL_ID \
  --role=ROLE

En el comando anterior, FUNCTION_NAME es el nombre de la función, PRINCIPAL_ID es la dirección de correo electrónico que identifica a la cuenta de servicio, precedida por serviceAccount:, y ROLE es el rol.

Para obtener una lista de fuentes aceptables para PRINCIPAL_ID, consulta Identificadores de principal. Para obtener una lista de los valores posibles de ROLE, consulta la página de referencia de roles de IAM.

Si a la principal se le otorgaron varias funciones, asegúrate de especificar la que deseas quitar.

Adición masiva de principales

Crea una política de IAM con el nombre policy.json, por ejemplo:

  {
    "bindings": [
      {
        "role": ROLE,
        "members": [
        PRINCIPAL_ID
        ]
      }
    ]
  }

Usa el comando gcloud functions set-iam-policy:

gcloud functions set-iam-policy FUNCTION_NAME policy.json

Para obtener una lista de fuentes aceptables para PRINCIPAL_ID, consulta Identificadores de principal. Para obtener una lista de valores aceptables para ROLE, consulta la página de referencia de roles de IAM.

Visualiza las principales

Para ver las entidades principales, usa el comando gcloud functions get-iam-policy:

gcloud functions get-iam-policy FUNCTION_NAME

Permite la invocación de funciones de HTTP no autenticadas

Para permitir las invocaciones no autenticadas, debes especificar esto en la implementación o después.

Usa una variante especial del enfoque descrito antes para otorgar a los invocadores no autenticados la capacidad de invocar una función de HTTP.

Si desarrollas funciones en un proyecto que está sujeto a la política de la organización de uso compartido restringido al dominio, no podrás permitir la invocación no autenticada de una función.

.

Durante la implementación

El comando gcloud functions deploy incluye un mensaje para ayudarte a configurar permisos de invocación durante la creación de la función. También puede incluir la marca --allow-unauthenticated:

gcloud functions deploy FUNCTION_NAME \
  --trigger-http \
  --allow-unauthenticated \
  ...

Las implementaciones posteriores de la misma función no cambian su estado, incluso si no usas esta marca.

Después de la implementación

Usa el comando gcloud run services add-iam-policy-binding para otorgar el rol roles/run.invoker a la función específica:

gcloud run services add-iam-policy-binding FUNCTION_NAME \
  --member="allUsers" \
  --role="roles/run.invoker"

Consulta la referencia de gcloud run add-iam-policy-binding para obtener más información sobre estos campos.