El uso compartido restringido del dominio te permite limitar el uso compartido de recursos según un dominio o un recurso de la organización. Cuando el uso compartido con restricción de dominio está activo, solo se pueden otorgar roles de IAM en tu organización de Google Cloud a los principales que pertenecen a dominios o organizaciones permitidos.
Existen tres tipos de políticas de la organización que puedes usar para restringir identidades por dominio:
- Políticas de la organización personalizadas que hacen referencia al recurso
iam.googleapis.com/AllowPolicy
- La restricción administrada
iam.managed.allowedPolicyMembers
- La restricción predefinida
iam.allowedPolicyMemberDomains
Antes de comenzar
Elige el método que usarás para implementar el uso compartido restringido del dominio. Para obtener más información sobre los beneficios y las desventajas de cada método, consulta Métodos para restringir el uso compartido por dominio.
Roles obligatorios
Para obtener los permisos que necesitas para aplicar el uso compartido restringido de dominios,
pídele a tu administrador que te otorgue el rol de IAM de administrador de políticas de la organización (roles/orgpolicy.policyAdmin
) en la organización.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Usa políticas de la organización personalizadas para implementar el uso compartido restringido del dominio
Crea una restricción personalizada que restrinja a qué principales se les pueden otorgar roles en tu organización:
Usa la función CEL
memberInPrincipalSet
con la principal de tu organización configurada para restringir las asignaciones de roles a los miembros de tu organización. Para obtener información sobre cómo encontrar el ID de tu organización, consulta Cómo recuperar el ID de un recurso de organización.Por ejemplo, la siguiente restricción restringe las asignaciones de roles a los miembros de tu organización:
name: organizations/ORG_ID/customConstraints/custom.allowInternaldentitiesOnly methodTypes: - CREATE - UPDATE condition: "resource.bindings.all( binding, binding.members.all(member, MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID']) ) )" actionType: ALLOW displayName: Only allow organization members to be granted roles
De manera opcional, agrega funciones CEL adicionales para definir mejor la restricción, unidas con operadores lógicos (
&&
,||
o!
). Puedes agregar cualquiera de las siguientes funciones:Por ejemplo, la siguiente restricción limita las asignaciones de roles a los miembros de tu organización y a
admin@example.com
:name: organizations/ORG_ID/customConstraints/custom.allowInternaldentitiesOnly methodTypes: - CREATE - UPDATE condition: "resource.bindings.all( binding, binding.members.all(member, ( MemberInPrincipalSet(member, ['//cloudresourcemanager.googleapis.com/organizations/ORG_ID']) || MemberSubjectMatches(member, ['user:admin@example.com']) ) ) )" actionType: ALLOW displayName: Only allow organization members and service agents to be granted roles
Configura la restricción personalizada:
Después de crear el archivo YAML para una nueva restricción personalizada, debes configurarla para que esté disponible para las políticas de la organización de tu organización. Para configurar una restricción personalizada, usa el comandogcloud org-policies set-custom-constraint
: Reemplazagcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
por la ruta de acceso completa al archivo de restricción personalizado. Por ejemplo,/home/user/customconstraint.yaml
. Una vez completadas, tus restricciones personalizadas estarán disponibles como políticas de la organización en tu lista de políticas de la organización de Google Cloud . Para verificar que la restricción personalizada exista, usa el comandogcloud org-policies list-custom-constraints
: Reemplazagcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
por el ID del recurso de tu organización. Para obtener más información, consulta Visualiza las políticas de la organización.Aplica la política de la organización personalizada:
Puedes aplicar una restricción booleana si creas una política de la organización que haga referencia a ella y si aplicas esa política a un recurso de Google Cloud .Console
- En la consola de Google Cloud , ve a la página Políticas de la organización.
- En el selector de proyectos, selecciona el proyecto para el que deseas configurar la política de la organización.
- En la lista de la página Políticas de la organización, selecciona tu restricción para ver la página Detalles de la política de esa restricción.
- Si deseas configurar las políticas de la organización para este recurso, haz clic en Administrar política.
- En la página Editar política, selecciona Anular la política del elemento superior.
- Haz clic en Agregar una regla.
- En la sección Aplicación, selecciona si la aplicación de esta política de la organización está activada o desactivada.
- Opcional: haz clic en Agregar condición para que la política de la organización sea condicional en una etiqueta. Ten en cuenta que si agregas una regla condicional a una política de la organización, debes agregar al menos una regla sin condición o la política no se puede guardar. Para obtener más información, consulta Configura una política de la organización con etiquetas.
- Si se trata de una restricción personalizada, puedes hacer clic en Probar cambios para simular el efecto de esta política de la organización. Para obtener más información, consulta Prueba los cambios en las políticas de la organización con Policy Simulator.
- Para finalizar y aplicar la política de la organización, haz clic en Establecer política. La política tarda hasta 15 minutos en aplicarse.
gcloud
Para crear una política de la organización que aplique una restricción booleana, crea un archivo de política en formato YAML que haga referencia a la restricción:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Reemplaza lo siguiente:
-
PROJECT_ID
: el proyecto en el que deseas aplicar tu restricción. -
CONSTRAINT_NAME
: Es el nombre de la restricción que deseas aplicar. Por ejemplo:compute.disableAllIpv6
Para aplicar la política de la organización que contiene la restricción, ejecuta el siguiente comando:
gcloud org-policies set-policy POLICY_PATH
Reemplaza
POLICY_PATH
por la ruta de acceso completa al archivo YAML de la política de la organización. La política tarda hasta 15 minutos en aplicarse.
Usa la restricción iam.managed.allowedPolicyMembers
para implementar el uso compartido restringido al dominio
Console
En la consola de Google Cloud , ve a la página Políticas de la organización.
En el selector de proyectos, selecciona el proyecto, la organización o la carpeta para la que deseas editar la política de la organización. En la página Políticas de la organización que aparece, se muestra una lista de las restricciones de la política de la organización que están disponibles para este recurso.
En la lista, selecciona la restricción administrada Restrict Allowed Policy Members in IAM Allow Policies.
En la página Detalles de la política, haz clic en Administrar política.
En la página Editar política, selecciona Anular la política del elemento superior.
Selecciona Agregar una regla y, luego, actualiza la regla de la política de la organización:
En Aplicación, selecciona Activado.
De manera opcional, haz clic en Agregar condición para que la política de la organización sea condicional en una etiqueta. Si agregas una regla condicional a una política de la organización, debes agregar al menos una regla sin condición o la política no se puede guardar. Para obtener más información, consulta Configura una política de la organización con etiquetas.
En la sección Parameters, configura los miembros y los conjuntos de principales a los que se les deben otorgar roles en tu organización y, luego, haz clic en Save.
De forma opcional, si deseas obtener una vista previa del efecto del cambio en la política de la organización antes de que se aplique, haz clic en Probar cambios. Para obtener más información sobre cómo probar los cambios en las políticas de la organización, consulta Prueba los cambios en las políticas de la organización con Policy Simulator.
Para aplicar la política de la organización en el modo de ejecución de prueba, haz clic en Establecer política de ejecución de prueba. Para obtener más información, consulta Crea una política de la organización en el modo de ejecución de prueba.
Después de verificar que la política de la organización en el modo de ejecución de prueba funcione según lo previsto, haz clic en Establecer política para configurar la política activa.
gcloud
Crea un archivo YAML para definir la política de la organización:
name: organizations/ORG_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true - parameters: allowedMemberSubjects: - ALLOWED_MEMBER_1 - ALLOWED_MEMBER_2 allowedPrincipalSets: - ALLOWED_PRINCIPAL_SET_1 - ALLOWED_PRINCIPAL_SET_2
Reemplaza lo siguiente:
ORG_ID
: Es el ID numérico de tu organización de Google Cloud.CONSTRAINT_NAME
: Es el nombre de la restricción que deseas establecer.ALLOWED_MEMBER_1
,ALLOWED_MEMBER_2
: Los miembros a los que se les debe poder otorgar roles en tu organización. Por ejemplo,user:example-user@example.com
.ALLOWED_PRINCIPAL_SET_1
,ALLOWED_PRINCIPAL_SET_2
: Son los conjuntos de principales a los que se les deben poder otorgar roles en tu organización. Por ejemplo,//cloudresourcemanager.googleapis.com/organizations/0123456789012
.
De forma opcional, agrega un bloque
condition
arules
para que la política de la organización sea condicional en una etiqueta. Si agregas una regla condicional a una política de la organización, debes agregar al menos una regla sin condición o la política no se puede guardar. Para obtener más información, consulta Configura una política de la organización con etiquetas.Establece la política con el comando
org-policies set-policy
y la marcaspec
:gcloud org-policies set-policy POLICY_PATH \ --update-mask=spec
Reemplaza
POLICY_PATH
por la ruta de acceso completa al archivo YAML de la política de la organización.
Para aprender a probar la política en modo de ejecución de prueba antes de aplicarla, consulta Cómo crear una política de la organización en modo de ejecución de prueba.
Para obtener información sobre cómo simular la política antes de aplicarla, consulta Prueba los cambios en las políticas de la organización con Policy Simulator.
REST
Para establecer la política de la organización, usa el método organizations.policies.create
.
POST https://orgpolicy.googleapis.com/v2/{parent=organizations/ORGANIZATION_ID}/policies
El cuerpo JSON de la solicitud contiene la definición de una política de la organización.
Si esta restricción no admite parámetros, omite el bloque parameters
debajo de rules
.
{
"name": "organizations/ORG_ID/policies/CONSTRAINT_NAME",
"spec": {
"rules": [
{
"enforce": true,
"parameters": {
"allowedMemberSubjects": [
"ALLOWED_MEMBER_1",
"ALLOWED_MEMBER_2"
],
"allowedPrincipalSets": [
"ALLOWED_PRINCIPAL_SET_1",
"ALLOWED_PRINCIPAL_SET_2"
]
}
}
]
}
}
Reemplaza lo siguiente:
ORG_ID
: Es el ID numérico de tu organización de Google Cloud.CONSTRAINT_NAME
: Es el nombre de la restricción que deseas establecer.ALLOWED_MEMBER_1
,ALLOWED_MEMBER_2
: Los miembros a los que se les debe poder otorgar roles en tu organización. Por ejemplo,user:example-user@example.com
.ALLOWED_PRINCIPAL_SET_1
,ALLOWED_PRINCIPAL_SET_2
: Son los conjuntos de principales a los que se les deben poder otorgar roles en tu organización. Por ejemplo,//cloudresourcemanager.googleapis.com/organizations/0123456789012
.
De forma opcional, agrega un bloque condition
a rules
para que la política de la organización sea condicional en una etiqueta. Si agregas una regla condicional a una política de la organización, debes agregar al menos una regla sin condición o la política no se puede guardar. Para obtener más información, consulta Configura una política de la organización con etiquetas.
Para aprender a probar la política en modo de ejecución de prueba antes de aplicarla, consulta Cómo crear una política de la organización en modo de ejecución de prueba.
Para obtener información sobre cómo simular la política antes de aplicarla, consulta Prueba los cambios en las políticas de la organización con Policy Simulator.
Usa la restricción iam.allowedPolicyMemberDomains
para implementar el uso compartido restringido al dominio
La restricción de dominio es un tipo de restricción de lista.
Los IDs de cliente de Google Workspace y los IDs de recursos de la organización de Google Cloud se pueden agregar y quitar de la lista allowed_values
de una restricción de dominio. La restricción de dominio no admite valores de rechazo, y una política de la organización no se puede guardar con IDs en la lista denied_values
.
La política de la organización permitirá todos los dominios asociados con una cuenta de Google Workspace o un recurso de la organización que se enumeren en allowed_values
. La política de la organización rechazará todos los demás dominios.
Puedes crear una política de la organización que aplique la restricción de dominio de forma condicional a cualquier recurso incluido en la lista de recursos compatibles. Por ejemplo, buckets de Cloud Storage, conjuntos de datos de BigQuery o VMs de Compute Engine.
Console
Para establecer una política de la organización que incluya una restricción de dominio, haz lo siguiente:
En la consola de Google Cloud , ve a la página Políticas de la organización.
En el selector de proyectos, selecciona el recurso de la organización en el que deseas configurar la política de la organización.
En la página Políticas de la organización, selecciona Uso compartido restringido por dominio en la lista de restricciones.
En la página Detalles de la política, haz clic en Administrar política.
En Se aplica a, selecciona Anular la política del elemento superior.
Haz clic en Agregar una regla.
En Valores de la política, selecciona personalizado.
En Tipo de política, selecciona Permitir.
En Valores personalizados, ingresa un ID de recurso de organización o un ID de cliente de Google Workspace en el campo.
Si ingresas el ID de recurso de la organización, se les pueden otorgar roles en tu organización a los siguientes principales:
- Todos los grupos de identidad del personal de tu organización
- Todas las cuentas de servicio y los grupos de identidades para cargas de trabajo de cualquier proyecto de la organización
- Todos los agentes de servicio asociados con recursos de tu organización
Si ingresas el ID de cliente de Google Workspace, se les pueden otorgar roles en tu organización a los siguientes miembros principales:
- Todas las identidades de todos los dominios asociados con tu ID de cliente de Google Workspace
- Todos los grupos de identidad del personal de tu organización
- Todas las cuentas de servicio y los grupos de identidades para cargas de trabajo de cualquier proyecto de la organización
- Todos los agentes de servicio asociados con recursos de tu organización
Si deseas agregar varios IDs, haz clic en Nuevo valor de la política para crear un campo adicional.
Haz clic en Listo.
De manera opcional, haz clic en Agregar condición para que la restricción de dominio sea condicional en una etiqueta.
En el campo Título, ingresa un nombre para la condición.
En el campo Descripción, asigna una descripción a la condición. La descripción proporciona contexto sobre las etiquetas que se requieren y cómo afectan a los recursos.
Puedes usar el Creador de condiciones para crear una condición que requiera una etiqueta en particular para que la restricción tenga efecto.
En el menú Tipo de condición de la pestaña Creador de condiciones, selecciona Etiqueta.
Selecciona el operador para tu condición. Para hacer coincidir una etiqueta completa, usa el operador matches. Para hacer coincidir una clave de etiqueta y un valor de etiqueta, usa el operador matches ID.
Si seleccionaste el operador coincide, ingresa el nombre con espacio de nombres del valor de la etiqueta. Si seleccionaste el operador coincide con el ID, ingresa los IDs de clave y valor.
Para crear varias condiciones, haz clic en Agregar. Si agregas otra condición, puedes configurar la lógica condicional para que requiera todas ellas activando Y. Puedes configurar la lógica condicional para que requiera que solo una de las condiciones sea verdadera activando O.
Para borrar una expresión, haz clic en la X grande que se encuentra a la derecha de los campos de condición.
Cuando termines de editar las condiciones, haz clic en Guardar.
Para aplicar la política, haz clic en Establecer política.
gcloud
Las políticas se pueden configurar a través de Google Cloud CLI. Para crear una política que incluya la restricción de dominio, ejecuta el siguiente comando:
Para establecer una política de la organización que incluya la restricción de dominio, ejecuta el siguiente comando:
gcloud org-policies set-policy POLICY_PATH
Donde POLICY_PATH
es la ruta de acceso completa al archivo YAML de la política de la organización, que debería verse de la siguiente manera:
name: organizations/ORGANIZATION_ID/policies/iam.allowedPolicyMemberDomains
spec:
rules:
- condition: # This condition applies to the values block.
expression: "resource.matchTag('ORGANIZATION_ID/environment', 'dev')"
values:
allowedValues:
- PRINCIPAL_SET
- values:
allowedValues:
- PRINCIPAL_SET
Reemplaza lo siguiente:
- ORGANIZATION_ID con el ID del recurso de la organización en el que se establecerá esta política.
PRINCIPAL_SET para los identificadores principales de Cloud Identity que deseas permitir, incluido el ID de recurso de la organización. Por ejemplo,
is:principalSet://iam.googleapis.com/organizations/01234567890123
.Se deben usar los IDs de cliente de Google Workspace para todas las demás identidades que desees permitir. Por ejemplo,
is:C03g5e3bc
Solo las identidades que pertenezcan al ID de recurso de la organización o al dominio de Google Workspace de la lista de allowed_values
se admitirán en las políticas de IAM una vez que se haya aplicado esta política de la organización.
Los usuarios y grupos humanos de Google Workspace deben ser recursos secundarios de ese recurso de la organización o parte de ese dominio de Google Workspace, y las cuentas de servicio de IAM deben ser recursos secundarios de un recurso de la organización asociado con el dominio de Google Workspace determinado.
Por ejemplo, si creaste una política de la organización solo con el ID de cliente de Google Workspace de tu empresa, solo los principales de ese dominio podrían agregarse a la política de IAM de ese momento.
Ejemplo de mensaje de error
Cuando se viola la restricción predefinida iam.allowedPolicyMemberDomains
debido a que se intenta agregar un principal que no está incluido en la lista allowed_values
, la operación fallará y luego se mostrará un mensaje de error.
Console
gcloud
ERROR: (gcloud.projects.set-iam-policy) FAILED_PRECONDITION: One or more users named in the policy do not belong to a permitted customer.
Cómo recuperar el ID de un recurso de organización
Puedes obtener el ID de recurso de tu organización con la consola de Google Cloud , gcloud CLI o la API de Cloud Resource Manager.
Console
Para obtener el ID de recurso de tu organización con la consola de Google Cloud , haz lo siguiente:
- Ve a la consola de Google Cloud :
- En el selector de proyectos en la parte superior de la página, selecciona el recurso de tu organización.
- En el lado derecho, haz clic en Más y, luego, en Configuración.
En la página Configuración, se muestra el ID de tu recurso de organización.
gcloud
Para encontrar el ID de tu recurso de organización, ejecuta el siguiente comando:
gcloud organizations list
Con este comando, se muestra una lista de todos los recursos de la organización a los que perteneces y sus IDs correspondientes.
API
Para encontrar el ID de recurso de tu organización con la API de Cloud Resource Manager, usa el método organizations.search()
, incluida una consulta para tu dominio. Por ejemplo:
GET https://cloudresourcemanager.googleapis.com/v3/organizations:search{query=domain:altostrat.com}
La respuesta contiene los metadatos del recurso de la organización que pertenece a altostrat.com
, que incluye el ID del recurso de la organización.
Después de obtener el ID de recurso de tu organización, debes usar el identificador correcto para el conjunto de principales que le pertenecen. Por ejemplo:
principalSet://iam.googleapis.com/organizations/01234567890123
Para obtener más información sobre los identificadores de principal de IAM, consulta Identificadores de principal.
Recupera un ID de cliente de Google Workspace
El ID de cliente de Google Workspace que usa la restricción de dominio se puede obtener de las dos siguientes maneras:
gcloud
El comando de lista de organizaciones de gcloud se puede usar para ver todas las organizaciones en las que tienes el permiso resourcemanager.organizations.get
:
gcloud organizations list
Con este comando, se mostrarán el DISPLAY_NAME
, el ID
(ID de la organización) y el DIRECTORY_CUSTOMER_ID
. El ID de cliente de Google Workspace es el DIRECTORY_CUSTOMER_ID
.
API
La API del directorio de Google Workspace se puede usar para recuperar un ID de cliente de Google Workspace.
Cuando hayas accedido como administrador de Google Workspace, puedes visitar la documentación del método de la API Customers: get y hacer clic en Ejecutar. Después de la autorización, la respuesta mostrará tu ID de cliente.
Como alternativa, puedes usar un cliente de API:
- Obtén un token de acceso de OAuth para el permiso
https://www.googleapis.com/auth/admin.directory.customer.readonly
. Ejecuta el siguiente comando para consultar la API de directorio de Google Workspace:
curl -# -X GET "https://www.googleapis.com/admin/directory/v1/customers/customerKey" \ -H "Authorization: Bearer $access_token" -H "Content-Type: application/json"
Con este comando, se mostrará una respuesta JSON que incluye la información del cliente. El ID de cliente de Google Workspace es el id
.
Configura excepciones para el uso compartido restringido al dominio
Algunos servicios de Google Cloud usan cuentas de servicio, agentes de servicio y otras cuentas para realizar acciones en tu nombre. El uso compartido con restricción de dominio puede impedir que a estas cuentas se les otorguen automáticamente los roles de IAM que necesitan, lo que puede provocar que ciertas acciones fallen.
En la siguiente tabla, se enumeran las acciones en Google Cloud que podrían verse afectadas por el uso compartido con dominio restringido. También se enumeran las cuentas a las que se deben otorgar roles automáticamente para que estas acciones se realicen correctamente.
Si usas políticas de organización personalizadas o la restricción administrada iam.managed.allowedPolicyMembers
para implementar el uso compartido restringido al dominio, considera agregar estas cuentas como excepciones a la restricción de uso compartido restringido al dominio. Si usas la
restricción predefinida iam.allowedPolicyMemberDomains
para implementar el uso compartido
restringido de dominios, es posible que debas forzar el acceso a la cuenta para que estas cuentas realicen las acciones enumeradas.
Acción | Cuenta |
---|---|
Vincula Google Analytics 360 con BigQuery | analytics-processing-dev@system.gserviceaccount.com |
Comparte datos de forma pública | allUsers y allAuthenticatedUsers |
Habilita el receptor de registros de BigQuery para una cuenta de facturación | bUNIQUE_ID@gcp-sa-loggingiam.gserviceaccount.com |
Habilita la exportación de facturación a un bucket | 509219875288-kscf0cheafmf4f6tp1auij5me8qakbin@developer.gserviceaccount.com |
Habilita el registro de acceso del almacenamiento | cloud-storage-analytics@google.com |
Habilita la API de Firebase |
|
Usa Pub/Sub como un extremo para una app de Google Chat | chat-api-push@system.gserviceaccount.com |
Fuerza el acceso a la cuenta
Si necesitas forzar el acceso a la cuenta de un proyecto que infringe las restricciones del dominio, haz lo siguiente:
Quita la política de la organización que contiene la restricción de dominio.
Otórgale el acceso a la cuenta al proyecto.
Vuelve a implementar la política de la organización con la restricción de dominio.
Como alternativa, puedes otorgar acceso a un Grupo de Google que contenga las cuentas de servicio relevantes de la siguiente manera:
Crea un Grupo de Google dentro del dominio admitido.
Usa el panel de administrador de Google Workspace para desactivar la restricción del dominio para ese grupo.
Agrega la cuenta de servicio al grupo.
Otorga el acceso al grupo de Google en la política de IAM.