Antes de comenzar
Antes de configurar o editar la política dataform.restrictGitRemotes
, busca las URLs completas de los repositorios de Git remotos que deseas incluir en la lista de entidades permitidas.
Para encontrar la URL completa de un repositorio de Git remoto que ya está conectado a un repositorio de Dataform, sigue estos pasos:
En la consola de Google Cloud, ve a la página Dataform.
Selecciona un repositorio y, luego, haz clic en Configuración.
Ten en cuenta que las URLs de los repositorios remotos que se muestran en la página Dataform se acortan y no se pueden usar en la política
dataform.restrictGitRemotes
.En la página Configuración, en Configuración de conexión de Git, copia el valor de Fuente del repositorio.
El valor de Fuente del repositorio es la URL completa del repositorio remoto. Puedes usar esta URL en la política
dataform.restrictGitRemotes
.
Roles obligatorios
Para obtener los permisos que necesitas a fin de administrar las políticas de la organización, 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.
Este rol predefinido contiene los permisos necesarios para administrar las políticas de la organización. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para administrar las políticas de la organización:
-
orgpolicy.constraints.list
-
orgpolicy.policies.create
-
orgpolicy.policies.delete
-
orgpolicy.policies.list
-
orgpolicy.policies.update
-
orgpolicy.policy.get
-
orgpolicy.policy.set
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Información acerca de la restricción de repositorios de Git remotos
Puedes conectar un repositorio de Dataform a un repositorio de GitHub o GitLab.
Te recomendamos que restrinjas el grupo de repositorios remotos a los que se pueden conectar los repositorios de Dataform para evitar que actores maliciosos accedan a tu base de código y a los tokens de acceso de Dataform a través de copias desprotegidas de tu repositorio.
Puedes usar Organization Policy Service para crear una política de la organización que restringa a qué URLs de repositorio de Git se puede conectar Dataform.
La restricción para restringir los repositorios de Git remotos en Dataform es la siguiente:
constraints/dataform.restrictGitRemotes
Para usar la restricción, creas una política de organización con una lista allowedValues
de URLs de repositorios remotos de Git que se pueden conectar a un repositorio de Dataform.
Los repositorios de Git remotos se identifican por su dirección URL completa.
La políticadataform.restrictGitRemotes
tiene un efecto retroactivo, lo que significa que la restricción afecta a los repositorios de Dataform preexistentes.
Cuando se implementa la política de la organización, el repositorio de Dataform solo puede conectarse a los repositorios de Git remotos que aparecen en la lista allowedValues
. Los repositorios de Git remotos que no se definen de forma explícita en la política de la organización no pueden conectarse a un repositorio de Dataform.
Si no configuras la política dataform.restrictGitRemotes
,
la comunicación entre los repositorios de Dataform y los repositorios remotos de
Git no se restringirá.
Puedes usar la política dataform.restrictGitRemotes
de las siguientes maneras:
Allow all
- Los repositorios de Dataform pueden conectarse a todas las URLs de repositorios remotos. Selecciona esta opción si tu organización no quiere bloquear ninguna comunicación con repositorios remotos. Como alternativa, para permitir todas las URLs de repositorios remotos, puedes dejar sin definir la política de la organización.
- Lista de URLs de
allowedValues
- Los repositorios de Dataform solo pueden conectarse a los repositorios remotos de la lista de entidades permitidas. Selecciona esta opción para evitar el robo de datos.
Deny all
- Los repositorios de Dataform no pueden conectarse a ninguna URL remota. Selecciona esta opción si tu organización desea bloquear toda la comunicación y usar repositorios de Dataform.
Especificaciones para incluir en la lista de entidades permitidas repositorios de Git remotos
Puedes aplicar esta restricción de lista solo a los repositorios de GitHub y GitLab.
La política de la organización se aplica de forma retroactiva y afecta a los repositorios de Dataform existentes.
Esta restricción acepta
allowedValues
, que bloquea la conexión a todos los demás repositorios remotos de Git, oDeny all
. El valor predeterminado esAllow all
: una política de organización no establecida permite la comunicación con todos los repositorios remotos de Git. Te recomendamos que configures la política de la organización enallowedValues
.Depende de ti o de un administrador que cuente con los permisos necesarios para administrar y mantener la política. Asegúrate de que se comunique sobre el administrador de políticas dentro de tu organización.
Establece la restricción de políticas de la organización a nivel de la organización
Console
- Ve a la página /Organizational Policies/Organization Policies.
- Si es necesario, elige la organización requerida en el menú desplegable del proyecto.
- Haz clic en Restrict git remotes for repositories in Dataform.
- Haz clic en Administrar política. Si no puedes hacer clic en el botón Administrar política, no tienes los permisos correctos.
Selecciona Personalizar para establecer la política de la organización para repositorios de Git remotos específicos.
Elige el Tipo de política y la Aplicación de política obligatorios.
En Valores de la política, elige Personalizado.
Ingresa la URL completa de un repositorio de Git remoto.
Haz clic en Nuevo valor de la política y, luego, ingresa las URLs completas de los repositorios remotos de Git según sea necesario.
Haz clic en Guardar para aplicar la restricción.
gcloud
Para establecer una restricción para los repositorios de Git remotos, primero necesitas el ID de tu organización. Puedes encontrar el ID de la organización si ejecutas el comando organizations list
y buscas el ID numérico en la respuesta:
gcloud organizations list
La CLI de gcloud muestra una lista de organizaciones en el siguiente formato:
DISPLAY_NAME ID example-organization1 29252605212 example-organization2 1234567890
Usa el comando gcloud resource-manager org-policies set-policy
para establecer la política de la organización. Debes proporcionar tu política como un archivo JSON o YAML.
Crea un archivo JSON en el siguiente formato:
{ "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "values": { "allowedValues": ["https://github.com/example/allowed-repository.git"] } } ] } }
Reemplaza ORGANIZATION_ID
por el ID numérico de la organización.
Si no quieres que los repositorios de Dataform puedan conectarse a ningún repositorio de Git remoto, puedes establecer una política de organización con denyAll
establecido en true
:
{ "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "denyAll": true } ] } }
Reemplaza ORGANIZATION_ID
por el ID numérico de la organización.
API
Usa la API de setOrgPolicy()
para definir la restricción. Dataform puede conectarse a las URLs del repositorio de Git remoto en la lista allowedValue
que especifiques.
Por ejemplo, la siguiente es una solicitud para aplicar la restricción dataform.restrictGitRemotes
a una organización a la que se pueden conectar los repositorios de Dataform de los repositorios remotos de Git seleccionados:
POST https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies
En el ejemplo anterior, ORGANIZATION_ID
es el ID numérico de la organización.
Ahora, en el cuerpo de la solicitud, debes proporcionar la política de la organización deseada para esta restricción:
{ "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "values": { "allowedValues": ["https://github.com/example/allowed-repository.git"] } } ] } }
Replace <code><var>ORGANIZATION_ID</var></code> with the numeric ID
of the organization.
Si no quieres que los repositorios de Dataform puedan conectarse a ningún repositorio de Git remoto, puedes establecer una política de organización con denyAll
establecido en true
:
{ "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "denyAll": true } ] } }
Replace <code><var>ORGANIZATION_ID</var></code> with the numeric ID
of the organization.
Si la política de la organización ya está configurada, debes ejecutar la siguiente solicitud con la definición de la política de la organización como cuerpo de la solicitud:
PATCH https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes
Establece la política de la organización a nivel del proyecto
Establecer una política de la organización a nivel del proyecto anula o se combina con la política de la organización a nivel de la organización. En caso de una combinación, denyAll
tiene prioridad sobre allowedValues
. Por ejemplo, si la política de la organización a nivel de la organización está configurada en denyAll
y la política combinada a nivel del proyecto enumera una URL de repositorio remoto en la lista allowedValues
, Dataform no puede conectarse al repositorio remoto. En ese caso, la política de organización a nivel del proyecto debe anular la política a nivel de la organización para que Dataform pueda conectarse al repositorio remoto. Para obtener más información sobre la jerarquía de la política de la organización, consulta Comprende la evaluación de jerarquías.
Console
Sigue el mismo proceso documentado en Establece la restricción de política de la organización a nivel de la organización, pero elige el proyecto deseado del selector de proyectos, en lugar de la organización.
gcloud
Usa el comando gcloud resource-manager org-policies set-policy
para establecer la política de la organización. Debes proporcionar tu política como un archivo JSON o YAML.
Crea un archivo JSON en el siguiente formato:
{ "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "values": { "allowedValues": ["https://github.com/example/allowed-repository.git"] } } ] } }
Reemplaza PROJECT_ID_OR_NUMBER
por el ID o el número del proyecto de esta política de la organización.
Luego, debes pasar el archivo con la solicitud:
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=PROJECT_ID
API
Usa la API de setOrgPolicy()
para definir la restricción. Dataform puede conectarse a las URLs del repositorio de Git remoto en la lista allowedValue
que especifiques.
Por ejemplo, la siguiente es una solicitud para aplicar la restricción dataform.restrictGitRemotes
a una organización en la que los repositorios de Dataform solo pueden conectarse a los repositorios remotos de Git seleccionados y aún no se configuró la política constraints/dataform.restrictGitRemotes
:
POST https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies
El cuerpo de la solicitud contiene la política de la organización deseada para esta restricción:
{ "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "values": { "allowedValues": ["https://github.com/example/allowed-repository.git"] } } ] } }
Reemplaza PROJECT_ID_OR_NUMBER
por el ID o el número del proyecto para esta solicitud.
La siguiente es una solicitud para aplicar la restricción dataform.restrictGitRemotes
a una organización en la que los repositorios de Dataform solo pueden conectarse a los repositorios remotos de Git seleccionados y la política constraints/dataform.restrictGitRemotes
ya está configurada:
PATCH https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes
El cuerpo de la solicitud contiene la política de la organización deseada para esta restricción:
{ "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes", "spec": { "rules": [ { "values": { "allowedValues": ["https://github.com/example/allowed-repository.git"] } } ] } }
Reemplaza PROJECT_ID_OR_NUMBER
por el ID o el número del proyecto para esta solicitud.
Prácticas recomendadas para incluir en la lista de entidades permitidas los repositorios remotos de Git
Para mitigar el riesgo de robo de datos, configura de forma explícita la restricción
dataform.restrictGitRemotes
para incluir en la lista de entidades permitidas una selección de repositorios remotos de Git de confianza.Si solo usas repositorios de Dataform que no están conectados a repositorios remotos de Git, establece la restricción
dataform.restrictGitRemotes
enDeny All
.Evita usar la lista
deniedValues
con esta restricción. Si defines valores en la listadeniedValues
, implica que solo los repositorios de Git remotos en la listadeniedValues
tienen restringida la conexión. Esto podría representar un problema de seguridad si quieres controlar con precisión a qué repositorios remotos de Git puede conectarse Dataform. Si quieres quitar ciertos repositorios de Git remotos de la listaallowedValues
, actualiza la política de la organización existente para quitarlos de la listaallowedValues
, en lugar de colocar el control remoto en la listadeniedValues
en una jerarquía inferior.Si deseas establecer una política de la organización en una gran parte de la jerarquía de recursos, pero eximir determinados proyectos, restablece la política de la organización predeterminada con el método
setOrgPolicy
y especifica el objetorestoreDefault
para permitir que todos los repositorios de Dataform de los proyectos se conecten a repositorios de Git remotos. Las políticas vigentes en la actualidad para los proyectos no se ven afectadas por la configuración predeterminada.Usa la política de la organización junto con los roles de IAM para controlar mejor el acceso a tu base de código de Dataform.
Todos los repositorios de Dataform dentro de la organización o el proyecto con la política de la organización habilitada están sujetos a esta política. Si esto genera algún problema, te recomendamos que configures otros servicios y productos en un proyecto diferente que no tenga aplicada la política de la organización, y que uses Shared VPC si es necesario.
Antes de configurar la política de
dataform.restrictGitRemotes
, asegúrate de comunicarte con respecto a la política de la organización y su administrador dentro de tu organización. Depende de ti o de un administrador que cuente con los permisos necesarios para administrar y mantener la política.
¿Qué sigue?
- Para obtener más información sobre la Política de la organización, consulta Introducción al Servicio de políticas de la organización.
- Para obtener más información sobre las restricciones de las políticas de la organización, consulta Restricciones de las políticas de la organización.
- Para obtener información sobre cómo administrar Google Cloud recursos con Resource Manager, consulta Administra tus Google Cloud recursos.