Autoriza el acceso con la IAM (1ª gen.)
Debes usar Identity and Access Management (IAM) para autorizar que las identidades realicen acciones administrativas en tus funciones, como crearlas, actualizarlas y borrarlas. Debes agregar principales, es decir, las identidades que deseas habilitar, como el correo electrónico de una cuenta de servicio o de usuario, a la función y, luego, otorgar a esas principales los roles de IAM adecuados. Estos roles incluyen permisos que definen las acciones que pueden realizar.
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
Consola
Ir a la consola de Google Cloud :
Haz clic en la casilla de verificación junto a la función que te interesa.
Haz clic en Permisos en la parte superior de la pantalla. Se abrirá el panel Permisos.
Haz clic en Agregar principal.
En el campo Principales nuevas, ingresa una o más identidades que necesiten acceso a tu función. Por lo general, es el correo electrónico de una cuenta de servicio o de usuario.
Elige una función (o funciones) del menú desplegable Seleccionar un rol. Los roles que seleccionas aparecen en el panel con una descripción breve del permiso que otorgan.
Haz clic en Guardar.
gcloud
Usa el comando gcloud functions add-iam-policy-binding:
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
En el que 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 brindar un PRINCIPAL_ID, consulta
Identificadores de principales.
Si deseas obtener una lista de valores aceptables para ROLE, consulta
la página de referencia de roles de IAM de Cloud Run Functions.
Quita roles de las principales
Consola
Ir a la consola de Google Cloud :
Haz clic en la casilla de verificación junto a la función que te interesa.
Haz clic en Permisos en la parte superior de la pantalla. Se abrirá el panel Permisos.
Busca la principal que deseas quitar. Revisa cada rol que se le haya otorgado.
Cuando encuentres la principal en el rol que deseas borrar, haz clic en el ícono de papelera que se encuentra al lado. Si deseas quitar por completo el acceso de la principal, hazlo para cada rol que se le haya otorgado.
gcloud
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.
Si deseas obtener una lista de fuentes aceptables para PRINCIPAL_ID, consulta
Identificadores de principales.
Si deseas obtener una lista de valores posibles para ROLE, consulta
la página de referencia de los roles de IAM de Cloud Run Functions.
Si a la principal se le otorgaron varios roles, asegúrate de especificar el que deseas quitar.
Adición masiva de principales
Consola
Ir a la consola de Google Cloud :
Haz clic en las casillas de verificación junto a las funciones a las que deseas asignar o restringir el acceso.
Haz clic en Permisos en la parte superior de la pantalla. Se abrirá el panel Permisos.
Para agregar principales, haz lo siguiente:
Haz clic en Agregar principal.
En Principales nuevas, ingresa varias identidades que requieran acceso a tu función.
Elige una función (o funciones) del menú desplegable Seleccionar un rol. Los roles que seleccionas aparecen en el panel con una descripción breve del permiso que otorgan.
Haz clic en Guardar.
gcloud
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
Si deseas obtener una lista de fuentes aceptables para PRINCIPAL_ID, consulta
Identificadores de principales.
Si deseas obtener una lista de valores aceptables para ROLE, consulta
la página de referencia de roles de IAM de Cloud Run Functions.
Visualiza las principales
Consola
Ir a la consola de Google Cloud :
Haz clic en el nombre de la función que te interesa.
Selecciona la pestaña Permisos. Se abrirá el panel Permisos.
Selecciona la pestaña Ver por principales para ver una lista de todas las principales con permisos en la función seleccionada.
gcloud
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
A partir del 15 de enero de 2020, las funciones de HTTP sin permitir invocaciones no autenticadas habilitaron el acceso restringido a los usuarios finales y las cuentas de servicio que no tienen los permisos adecuados.
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.
Durante la implementación
Consola
Selecciona Permitir invocaciones no autenticadas en la sección Autenticación del panel Activador.
gcloud
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 \ --no-gen2 \ --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
Para permitir la invocación no autenticada de una función, otorga el
rol de Invocador de Cloud Functions a la principal allUsers especial en la
función.
Consola
Ir a la consola de Google Cloud :
Haz clic en la casilla de verificación junto a la función receptora. (No hagas clic en la función).
Haz clic en Permisos en la parte superior de la pantalla. Se abrirá el panel Permisos.
Haz clic en Agregar principal.
En el campo Principales nuevas, escribe
allUsers.Selecciona la función Cloud Functions > Invocador de Cloud Functions en el menú desplegable Seleccionar un rol.
En respuesta al diálogo, haz clic en Permitir el acceso público.
gcloud
Usa el comando gcloud functions add-iam-policy-binding para otorgar el
rol roles/cloudfunctions.invoker a la principal allUsers especial en
la función.
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member="allUsers" \ --role="roles/cloudfunctions.invoker"
Consulta la
referencia de gcloud functions add-iam-policy-binding
para obtener más información sobre estos campos.
Uso compartido restringido al dominio
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. Esta política restringe el uso compartido de datos públicos para reducir el riesgo de robo de datos.
Si deseas implementar funciones que permitan la invocación no autenticada, recomendamos que borres la política de la organización de uso compartido restringido al dominio en el proyecto. Las políticas de la organización se pueden establecer a nivel de la organización, la carpeta o el proyecto.
Una vez que hayas creado tus funciones que permiten la invocación no autenticada, puedes volver a habilitar la política de la organización:
- Las funciones implementadas antes de que se haya vuelto a habilitar la política de la organización continuarán permitiendo la invocación no autenticada.
- Las nuevas versiones de estas funciones existentes se pueden implementar sin necesidad de invocación autenticada.
- No se pueden implementar funciones nuevas que permitan invocaciones no autenticadas.
Controla el acceso en todas las funciones de un proyecto
Si deseas otorgar roles en todas las funciones de un proyecto, puedes otorgarlos en el proyecto.