En Trusted Cloud by S3NS, los agentes de servicio a nivel de proyecto, carpeta y organización se crean automáticamente a medida que habilitas y usas los servicios deTrusted Cloud . A veces, estos agentes de servicio también reciben automáticamente roles que les permiten crear recursos y acceder a ellos en tu nombre.
Si es necesario, también puedes pedir que se creen agentes de servicio a nivel de proyecto, carpeta y organización para un servicio antes de usarlo. Trusted Cloud Si pides a Trusted Cloud que cree agentes de servicio, podrás asignar roles a los agentes de servicio antes de usar un servicio. Si aún no se ha creado ningún agente de servicio, no puedes conceder roles al agente de servicio.
Esta opción es útil si utilizas una de las siguientes estrategias para gestionar tus políticas de permisos:
- Un framework declarativo como Terraform. Si tu configuración de Terraform no incluye los roles de los agentes de servicio, esos roles se revocarán cuando apliques la configuración. Si creas agentes de servicio y les asignas roles en tu configuración de Terraform, te aseguras de que esos roles no se revoquen.
- Un sistema de políticas como código que almacena copias de sus políticas de permiso actuales en un repositorio de código. Si permites que Trusted Cloud se asignen roles a los agentes del servicio automáticamente, esos roles aparecerán en tu política de permisos real, pero no en la copia almacenada de la política de permisos. Para resolver esta incoherencia, es posible que revoques estos roles por error. Si creas agentes de servicio y les asignas roles de forma proactiva, puedes evitar que haya diferencias entre tu repositorio de código y tus políticas de permisos reales.
Después de activar la creación de agentes de servicio, debes conceder a los agentes de servicio los roles que suelen recibir automáticamente. De lo contrario, es posible que algunos servicios no funcionen correctamente. Esto se debe a que los agentes de servicio que se crean a petición de un usuario no tienen roles asignados automáticamente.
Antes de empezar
Enable the Resource Manager API.
Familiarízate con los agentes de servicio.
Roles obligatorios
Para activar la creación de agentes de servicio, no se necesitan permisos de IAM. Sin embargo, necesitas permisos de gestión de identidades y accesos específicos para realizar otras tareas en esta página:
-
Para obtener el permiso que necesitas para enumerar los servicios disponibles y sus endpoints, pide a tu administrador que te conceda el rol de gestión de identidades y accesos Lector de Uso de Servicio (
roles/serviceusage.serviceUsageViewer
) en el proyecto, la carpeta o la organización para los que quieras enumerar los servicios disponibles. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.Este rol predefinido contiene el permiso
serviceusage.services.list
, que es necesario para enumerar los servicios disponibles y sus endpoints.También puedes obtener este permiso con roles personalizados u otros roles predefinidos.
-
Para obtener los permisos que necesitas para conceder acceso a los agentes de servicio, pide a tu administrador que te asigne los siguientes roles de gestión de identidades y accesos en el proyecto, la carpeta o la organización a los que quieras conceder acceso:
-
Concede acceso a un proyecto a los agentes de servicio:
Administrador de gestión de identidades y accesos de proyectos (
roles/resourcemanager.projectIamAdmin
) -
Para conceder acceso a agentes de servicio a una carpeta, sigue estos pasos:
Administrador de carpetas (
roles/resourcemanager.folderAdmin
) -
Concede a los agentes de servicio acceso a proyectos, carpetas y organizaciones:
Administrador de la organización (
roles/resourcemanager.organizationAdmin
)
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para conceder acceso a los agentes del servicio. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para conceder acceso a los agentes del servicio, se necesitan los siguientes permisos:
-
Para dar acceso a los agentes de servicio a un proyecto, sigue estos pasos:
-
resourcemanager.projects.getIamPolicy
-
resourcemanager.projects.setIamPolicy
-
-
Para conceder acceso a una carpeta a los agentes de servicio, sigue estos pasos:
-
resourcemanager.folders.getIamPolicy
-
resourcemanager.folders.setIamPolicy
-
-
Para conceder acceso a una organización a los agentes de servicio, sigue estos pasos:
-
resourcemanager.organizations.getIamPolicy
-
resourcemanager.organizations.setIamPolicy
-
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
-
Concede acceso a un proyecto a los agentes de servicio:
Administrador de gestión de identidades y accesos de proyectos (
Identificar los agentes de servicio que se van a crear
Para identificar los agentes de servicio a nivel de proyecto, carpeta y organización a los que debes pedir que creen, haz lo siguiente: Trusted Cloud
Haz una lista de los servicios que usas y sus endpoints de API. Para ver todos los servicios disponibles y sus endpoints, utilice uno de los siguientes métodos:
Consola
Ve a la página Biblioteca de APIs de la Trusted Cloud consola.
El endpoint de la API es el nombre del servicio que se indica en la sección Detalles adicionales.
gcloud
El comando
gcloud services list
muestra todos los servicios disponibles de un proyecto.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
EXPRESSION
: opcional. Una expresión para filtrar los resultados. Por ejemplo, la siguiente expresión filtra todos los servicios cuyos nombres contienengoogleapis.com
, pero nosandbox
:name ~ googleapis.com AND name !~ sandbox
Para ver una lista de expresiones de filtro, consulta
gcloud topic filters
. -
LIMIT
: opcional. Número máximo de resultados que se devolverán. El valor predeterminado esunlimited
.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud services list --available --filter='EXPRESSION' --limit=LIMIT
Windows (PowerShell)
gcloud services list --available --filter='EXPRESSION' --limit=LIMIT
Windows (cmd.exe)
gcloud services list --available --filter='EXPRESSION' --limit=LIMIT
La respuesta contiene los nombres y los títulos de todos los servicios disponibles. El endpoint de la API es el valor del campo
NAME
.REST
El método
services.list
de la API Service Usage muestra todos los servicios disponibles de un proyecto.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
-
RESOURCE_TYPE
: el tipo de recurso del que quieres obtener la lista de servicios disponibles. Usaprojects
,folders
oorganizations
. -
RESOURCE_ID
: ID del proyecto, la carpeta o la organización Trusted Cloud de los que quieres obtener una lista de servicios disponibles. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
. Los IDs de carpetas y organizaciones son numéricos, como123456789012
. -
PAGE_SIZE
: opcional. Número de servicios que se incluirán en la respuesta. El valor predeterminado es 50 y el máximo es 200. Si el número de servicios es superior al tamaño de la página, la respuesta contiene un token de paginación que puedes usar para obtener la siguiente página de resultados. -
NEXT_PAGE_TOKEN
: opcional. El token de paginación devuelto en una respuesta anterior de este método. Si se especifica, la lista de servicios empezará donde terminó la solicitud anterior.
Método HTTP y URL:
GET https://serviceusage.googleapis.com/v1/RESOURCE_TYPE/RESOURCE_ID/services?pageSize=PAGE_SIZE&pageToken=NEXT_PAGE_TOKEN
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene los nombres y los títulos de todos los servicios disponibles para el recurso. Si el número de servicios disponibles es mayor que el tamaño de la página, la respuesta también contiene un token de paginación.El endpoint de la API es el valor del campo
name
.-
En la página de referencia del agente de servicio, busca cada endpoint de la API.
Si el endpoint aparece en la tabla, busca todos los agentes de servicio de ese endpoint. Ignora a los agentes de servicio cuya dirección de correo electrónico contenga el marcador de posición
IDENTIFIER
, ya que esos agentes de servicio son para recursos específicos de un servicio, no para proyectos, carpetas u organizaciones.Para cada agente de servicio a nivel de proyecto, de carpeta y de organización, anota lo siguiente:
- El formato de la dirección de correo del agente del servicio.
- El rol que se le ha concedido al agente de servicio, si procede.
Activar la creación del agente de servicio
Una vez que sepas qué agentes de servicio necesitas crear, puedes pedirle aTrusted Cloud que los cree.
Cuando le pides a Trusted Cloud que cree agentes de servicio, le proporcionas un servicio y un recurso. A continuación, Trusted Cloud crea todos los agentes de servicio de ese servicio y ese recurso.
gcloud
Para cada servicio para el que necesites crear agentes de servicio, haz lo siguiente:
Revisa las direcciones de correo de los agentes del servicio. Usa los marcadores de posición de las direcciones de correo para determinar los recursos para los que tienes que crear agentes de servicio:
Marcador de posición Dónde crear agentes de servicio PROJECT_NUMBER
Cada proyecto en el que vayas a usar el servicio FOLDER_NUMBER
Cada carpeta en la que vayas a usar el servicio ORGANIZATION_NUMBER
Cada organización en la que vayas a usar el servicio Crea agentes de servicio para cada recurso.
El comando
gcloud beta services identity create
crea todos los agentes de servicio de la API y el recurso especificados.Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
ENDPOINT
: el endpoint de la API para la que quieres crear un agente de servicio. Por ejemplo,aiplatform.googleapis.com
. -
RESOURCE_TYPE
: el tipo de recurso para el que quieres crear un agente de servicio. Usaproject
,folder
oorganization
. -
RESOURCE_ID
: ID del proyecto, la carpeta o la organización Trusted Cloud para los que quieres crear un agente de servicio. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
. Los IDs de carpetas y organizaciones son numéricos, como123456789012
.Puedes crear agentes de servicio para un recurso a la vez. Si necesitas crear agentes de servicio para varios recursos, ejecuta el comando una vez por cada recurso.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud beta services identity create --service=ENDPOINT \ --RESOURCE_TYPE=RESOURCE_ID
Windows (PowerShell)
gcloud beta services identity create --service=ENDPOINT ` --RESOURCE_TYPE=RESOURCE_ID
Windows (cmd.exe)
gcloud beta services identity create --service=ENDPOINT ^ --RESOURCE_TYPE=RESOURCE_ID
La respuesta contiene la dirección de correo del agente de servicio principal del servicio. Esta dirección de correo incluye el ID numérico del proyecto, la carpeta o la organización para los que has creado agentes de servicio.
Si el servicio no tiene un agente de servicio principal, la respuesta no contiene una dirección de correo electrónico.
A continuación se muestra un ejemplo de respuesta de un servicio que tiene un agente de servicio principal.
Service identity created: service-232332569935@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com
-
Opcional: Registra la dirección de correo del agente del servicio en la respuesta, si procede. Esta dirección de correo identifica al agente de servicio principal del servicio. Puede usar este identificador para asignar roles al agente de servicio principal.
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform. Para obtener más información, consulta la documentación de referencia del proveedor Terraform.
Para cada servicio para el que necesites crear agentes de servicio, haz lo siguiente:
Revisa las direcciones de correo de los agentes del servicio. Usa los marcadores de posición de las direcciones de correo para determinar los recursos para los que tienes que crear agentes de servicio:
Marcador de posición Dónde crear agentes de servicio PROJECT_NUMBER
Cada proyecto en el que vayas a usar el servicio FOLDER_NUMBER
Cada carpeta en la que vayas a usar el servicio ORGANIZATION_NUMBER
Cada organización en la que vayas a usar el servicio Crea agentes de servicio para cada recurso. Por ejemplo, el siguiente código crea todos los agentes de servicio a nivel de proyecto de AI Platform:
REST
Para cada servicio para el que necesites crear agentes de servicio, haz lo siguiente:
Revisa las direcciones de correo de los agentes del servicio. Usa los marcadores de posición de las direcciones de correo para determinar los recursos para los que tienes que crear agentes de servicio:
Marcador de posición Dónde crear agentes de servicio PROJECT_NUMBER
Cada proyecto en el que vayas a usar el servicio FOLDER_NUMBER
Cada carpeta en la que vayas a usar el servicio ORGANIZATION_NUMBER
Cada organización en la que vayas a usar el servicio Crea agentes de servicio para cada recurso.
El método
services.generateServiceIdentity
de la API Service Usage crea todos los agentes de servicio de la API y el recurso especificados.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
-
RESOURCE_TYPE
: el tipo de recurso para el que quieres crear un agente de servicio. Usaprojects
,folders
oorganizations
. -
RESOURCE_ID
: el ID del proyecto, la carpeta o la organización Trusted Cloud para los que quieres crear agentes de servicio. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
. Los IDs de carpetas y organizaciones son numéricos, como123456789012
.Puedes crear agentes de servicio para un recurso a la vez. Si necesitas crear agentes de servicio para varios recursos, envía una solicitud para cada recurso.
-
ENDPOINT
: el endpoint de la API para la que quieres crear un agente de servicio. Por ejemplo,aiplatform.googleapis.com
.
Método HTTP y URL:
POST https://serviceusage.googleapis.com/v1beta1/RESOURCE_TYPE/RESOURCE_ID/services/ENDPOINT:generateServiceIdentity
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene unOperation
que indica el estado de tu solicitud. Para comprobar el estado de la operación, usa el métodooperations.get
.Las operaciones finalizadas contienen la dirección de correo del agente de servicio principal del servicio. Esta dirección de correo incluye el ID numérico del proyecto, la carpeta o la organización para los que has creado agentes de servicio.
Si el servicio no tiene un agente de servicio principal, la respuesta no contiene una dirección de correo electrónico.
A continuación, se muestra un ejemplo de una operación finalizada de un servicio que tiene un agente de servicio principal.
{ "name": "operations/finished.DONE_OPERATION", "done": true, "response": { "@type": "type.googleapis.com/google.api.serviceusage.v1beta1.ServiceIdentity", "email": "service-232332569935@gcp-sa-aiplatform.s3ns-system.iam.gserviceaccount.com", "uniqueId": "112245693826560101651" } }
-
Opcional: Registra la dirección de correo del agente del servicio en la respuesta, si procede. Esta dirección de correo identifica al agente de servicio principal del servicio. Puede usar este identificador para asignar roles al agente de servicio principal.
Conceder roles a agentes de servicio
Después de que Trusted Cloud cree los agentes de servicio necesarios para tus proyectos, carpetas y organizaciones, utiliza las direcciones de correo de los agentes de servicio para asignarles roles.
Si has pedido a Trusted Cloud que cree agentes de servicio, debes concederles los roles que suelen recibir automáticamente. Si no lo haces, es posible que algunos servicios no funcionen correctamente. Esto se debe a que los agentes de servicio que se crean a petición de un usuario no tienen roles asignados automáticamente.
Para saber cómo identificar los roles concedidos automáticamente, consulta Identificar agentes de servicio para crear.
Buscar la dirección de correo del agente de servicio
Para encontrar la dirección de correo de un agente de servicio, sigue estos pasos:
gcloud
Si aún no lo has hecho, busca el formato de la dirección de correo del agente de servicio. Este formato se describe en la referencia del agente de servicio.
Sustituye los marcadores de posición de la dirección de correo por el número de proyecto, carpeta u organización correspondiente.
Si el agente de servicio es un agente de servicio principal, también puedes obtener su dirección de correo electrónico activando la creación del agente de servicio para el servicio. El comando para activar la creación del agente de servicio devuelve la dirección de correo del agente de servicio principal.
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform. Para obtener más información, consulta la documentación de referencia del proveedor Terraform.
Si aún no lo has hecho, busca el formato de la dirección de correo del agente de servicio. Este formato se describe en la referencia del agente de servicio.
Sustituye los marcadores de posición de la dirección de correo por expresiones que hagan referencia al número de proyecto, carpeta u organización correspondiente.
Por ejemplo, supongamos que se da la siguiente situación:
- El formato de la dirección de correo es
service-PROJECT_NUMBER@gcp-sa-aiplatform-cc.s3ns-system.iam.gserviceaccount.com
- El agente de servicio es de un proyecto etiquetado como
default
En este caso, la dirección de correo del agente de asistencia es la siguiente:
service-${data.google_project.default.number}@gcp-sa-aiplatform-cc.s3ns-system.iam.gserviceaccount.com
- El formato de la dirección de correo es
También puedes obtener la dirección de correo de un agente de servicio si es el agente de servicio principal de un servicio. Para ello, consulta el atributo email
del recurso google_project_service_identity
.
Por ejemplo, si tienes un bloque google_project_service_identity
etiquetado como default
, puedes obtener la dirección de correo del agente de servicio principal del servicio mediante la siguiente expresión:
${google_project_service_identity.default.email}
REST
Si aún no lo has hecho, busca el formato de la dirección de correo del agente de servicio. Este formato se describe en la referencia del agente de servicio.
Sustituye los marcadores de posición de la dirección de correo por el número de proyecto, carpeta u organización correspondiente.
Si el agente de servicio es un agente de servicio principal, también puedes obtener su dirección de correo electrónico activando la creación del agente de servicio para el servicio. El comando para activar la creación del agente de servicio devuelve la dirección de correo del agente de servicio principal.
Asignar un rol al agente de servicio
Una vez que hayas encontrado la dirección de correo del agente de servicio, puedes asignarle un rol como lo harías con cualquier otro principal.
Consola
En la consola, ve a la página IAM. Trusted Cloud
Selecciona un proyecto, una carpeta o una organización.
Haz clic en
Conceder acceso y, a continuación, introduce la dirección de correo del agente del servicio.Selecciona un rol de la lista desplegable para concederlo.
Opcional: Añade una condición al rol.
Haz clic en Guardar. Se asigna el rol al agente de servicio en el recurso.
gcloud
El comando
add-iam-policy-binding
te permite asignar rápidamente un rol a una cuenta principal.
Antes de usar los datos de los comandos que se indican a continuación, haz los siguientes cambios:
-
RESOURCE_TYPE
: el tipo de recurso al que quieras gestionar el acceso. Usaprojects
,resource-manager folders
oorganizations
. -
RESOURCE_ID
: el ID de tu Trusted Cloud proyecto, carpeta u organización. Los IDs de proyecto son alfanuméricos, comomy-project
. Los IDs de carpetas y organizaciones son numéricos, como123456789012
. -
PRINCIPAL
: identificador de la entidad principal o del miembro, que suele tener el siguiente formato:PRINCIPAL_TYPE:ID
. Por ejemplo,principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com
oprincipalSet://iam.googleapis.com/locations/global/workforcePools/example-pool/group/example-group@example.com
. Para ver una lista completa de los valores que puede tenerPRINCIPAL
, consulta Identificadores principales. -
ROLE_NAME
: el nombre del rol que quieres revocar. Se debe utilizar uno de los formatos indicados a continuación.- Roles predefinidos:
roles/SERVICE.IDENTIFIER
- Roles personalizados a nivel de proyecto:
projects/PROJECT_ID/roles/IDENTIFIER
- Roles personalizados a nivel de organización:
organizations/ORG_ID/roles/IDENTIFIER
Si quieres ver una lista de los roles predefinidos, consulta el artículo Descripción de los roles.
- Roles predefinidos:
-
CONDITION
: la condición que se va a añadir a la vinculación de roles. Si no quiere añadir ninguna condición, use el valorNone
. Para obtener más información sobre las condiciones, consulta el resumen de las condiciones.
Ejecuta el siguiente comando:
Linux, macOS o Cloud Shell
gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID \ --member=PRINCIPAL --role=ROLE_NAME \ --condition=CONDITION
Windows (PowerShell)
gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ` --member=PRINCIPAL --role=ROLE_NAME ` --condition=CONDITION
Windows (cmd.exe)
gcloud RESOURCE_TYPE add-iam-policy-binding RESOURCE_ID ^ --member=PRINCIPAL --role=ROLE_NAME ^ --condition=CONDITION
La respuesta contiene la política de gestión de identidades y accesos actualizada.
Terraform
Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform. Para obtener más información, consulta la documentación de referencia del proveedor Terraform.
REST
Para asignar un rol con la API REST, utiliza el patrón de lectura, modificación y escritura:
Lee la política de permiso actual llamando a
getIamPolicy()
.El método
getIamPolicy
de la API Resource Manager obtiene la política de permisos de un proyecto, una carpeta o una organización.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
API_VERSION
: la versión de la API que se va a usar. Para proyectos y organizaciones, usav1
. En el caso de las carpetas, usav2
.RESOURCE_TYPE
: el tipo de recurso cuya política quieres gestionar. Usa el valorprojects
,folders
oorganizations
.RESOURCE_ID
: ID de tu Trusted Cloud proyecto, organización o carpeta. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
. Los IDs de carpetas y organizaciones son numéricos, como123456789012
.POLICY_VERSION
: la versión de la política que se va a devolver. En las solicitudes se debe especificar la versión de la política más reciente, que es la versión 3. Consulta Especificar una versión de la política al obtener una política para obtener más información.
Método HTTP y URL:
POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:getIamPolicy
Cuerpo JSON de la solicitud:
{ "options": { "requestedPolicyVersion": POLICY_VERSION } }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene la política de permisos del recurso. Por ejemplo:
{ "version": 1, "etag": "BwWKmjvelug=", "bindings": [ { "role": "roles/owner", "members": [ "principal://iam.googleapis.com/locations/global/workforcePools/my-pool/subject/my-user@example.com" ] } ] }
Edita la política de permiso del recurso, ya sea mediante un editor de texto o de forma programática, para añadir o eliminar las entidades o las vinculaciones de roles que quieras. Por ejemplo, puede añadir o quitar un enlace de rol, o bien añadir o quitar principales de un enlace de rol.
Escribe la política de permiso actualizada llamando a
setIamPolicy()
.El método
setIamPolicy
de la API Resource Manager define la política de la solicitud como la nueva política de permiso del proyecto, la carpeta o la organización.Antes de usar los datos de la solicitud, haz las siguientes sustituciones:
API_VERSION
: la versión de la API que se va a usar. Para proyectos y organizaciones, usav1
. En el caso de las carpetas, usav2
.RESOURCE_TYPE
: el tipo de recurso cuya política quieres gestionar. Usa el valorprojects
,folders
oorganizations
.RESOURCE_ID
: ID de tu Trusted Cloud proyecto, organización o carpeta. Los IDs de proyecto son cadenas alfanuméricas, comomy-project
. Los IDs de carpetas y organizaciones son numéricos, como123456789012
.-
POLICY
: representación JSON de la política que quieres definir. Para obtener más información sobre el formato de una política, consulta la referencia de la política.
Método HTTP y URL:
POST https://cloudresourcemanager.googleapis.com/API_VERSION/RESOURCE_TYPE/RESOURCE_ID:setIamPolicy
Cuerpo JSON de la solicitud:
{ "policy": POLICY }
Para enviar tu solicitud, despliega una de estas opciones:
La respuesta contiene la política de permiso actualizada.
Siguientes pasos
- Consulta una lista de todos los agentes de servicio.
- Consulta otras formas de asignar roles a principales.
- Consulta cómo crear cuentas de servicio gestionadas por el usuario, que pueden actuar como identidades de tus cargas de trabajo.
- Más información sobre las prácticas recomendadas para usar Terraform en Trusted Cloud
- Consulta todos los Trusted Cloud ejemplos de Terraform.