Autoriza el acceso con la IAM
Debes usar Identity and Access Management (IAM) con el objetivo de autorizar identidades que realizan
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 la IAM.
En IAM, otorgas a las principales (las identidades que deseas habilitar, por lo general, el correo electrónico de una 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 empezar
Si deseas 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 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 es necesario para
controlar el acceso de una función específica o de todas las funciones de un proyecto.
También puedes obtener este permiso con roles personalizados o con otros roles predefinidos.
Consulta Roles de IAM para Cloud Functions con el objetivo de acceder a una lista completa de los roles y sus permisos asociados.
Habilita el acceso a una función
Para controlar las acciones en una función, puedes otorgar roles a 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 principales.
Para obtener una lista de valores aceptables para ROLE, consulta
la página de referencia de los roles de IAM.
Quita roles 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 principales.
Para obtener una lista de los valores posibles de ROLE, consulta
la página de referencia de los roles de IAM.
Si a la principal se le otorgaron varios roles, asegúrate de especificar el que deseas quitar.
Adición masiva de principales
Crea una política de IAM con nombre, por ejemplo, policy.json:
{ "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 principales.
Para obtener una lista de valores aceptables para ROLE, consulta
la página de referencia de los roles de IAM.
Visualiza las principales
Para ver las 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 especificarlo durante la implementación o después de ella.
Usa una variante especial del enfoque descrito más arriba 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 los permisos de invocación durante la creación de funciones. 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.