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.