Antes de começar
Antes de definir ou editar a política dataform.restrictGitRemotes, encontre os URLs completos dos repositórios Git remotos que você quer adicionar à lista de permissões.
Para encontrar o URL completo de um repositório Git remoto que já está conectado a um repositório do Dataform, siga estas etapas:
Noconsole, acesse a página Dataform. Google Cloud
Selecione um repositório e clique em Configurações.
Os URLs de repositórios remotos mostrados na Dataform página são abreviados e não podem ser usados na
dataform.restrictGitRemotespolítica.Na página Configurações, em Configurações de conexão do Git, copie o valor de Origem do repositório.
O valor de Origem do repositório é o URL completo do repositório remoto. Você pode usar esse URL na política
dataform.restrictGitRemotes.
Funções exigidas
Para receber as permissões necessárias a fim de gerenciar as políticas da organização, peça ao administrador para conceder a você o papel do IAM de Administrador de políticas da organização (roles/orgpolicy.policyAdmin) na organização.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para gerenciar as políticas da organização. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As permissões a seguir são necessárias para gerenciar as políticas da organização:
-
orgpolicy.constraints.list -
orgpolicy.policies.create -
orgpolicy.policies.delete -
orgpolicy.policies.list -
orgpolicy.policies.update -
orgpolicy.policy.get -
orgpolicy.policy.set
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Sobre a restrição de repositórios Git remotos
É possível conectar um repositório do Dataform a um repositório do GitHub ou do GitLab.
Talvez você queira restringir o pool de repositórios remotos aos quais os repositórios do Dataform podem se conectar para impedir que agentes mal-intencionados acessem sua base de código e tokens de acesso do Dataform por cópias desprotegidas do repositório.
É possível usar o serviço de políticas da organização para criar uma política que restrinja a quais URLs de repositórios Git o Dataform pode se conectar.
A restrição para repositórios Git remotos no Dataform é:
constraints/dataform.restrictGitRemotes
Para usar a restrição, crie uma política da organização com uma lista allowedValues de URLs de repositórios Git remotos que podem se conectar a um repositório do Dataform.
Os repositórios Git remotos são identificados pelo endereço URL completo.
A política dataform.restrictGitRemotes tem um efeito retroativo, o que significa que a restrição afeta os repositórios do Dataform preexistentes.
Quando a política da organização está em vigor, o repositório do Dataform só pode se conectar aos repositórios Git remotos listados na lista allowedValues. Os repositórios Git remotos que não estão definidos explicitamente na política da organização não podem se conectar a um repositório do Dataform.
Se você não definir a política dataform.restrictGitRemotes, a comunicação entre os repositórios do Dataform e os repositórios Git remotos não será restrita.
É possível usar a política dataform.restrictGitRemotes das seguintes maneiras:
Allow all- Os repositórios do Dataform podem se conectar a todos os URLs de repositórios remotos. Selecione essa opção se a organização não quiser bloquear nenhuma comunicação com repositórios remotos. Como alternativa, para permitir todos os URLs de repositórios remotos, deixe a política da organização não definida.
- Lista de URLs
allowedValues - Os repositórios do Dataform podem se conectar apenas aos repositórios remotos permitidos. Selecione essa opção para evitar a exfiltração de dados.
Deny all- Os repositórios do Dataform não podem se conectar a nenhum URL remoto. Selecione essa opção se a organização quiser bloquear toda a comunicação e usar repositórios do Dataform.
Especificações para permitir repositórios Git remotos
É possível aplicar essa restrição de lista apenas aos repositórios GitHub e GitLab.
A política da organização é aplicada retroativamente e afeta os repositórios do Dataform atuais.
Essa restrição aceita
allowedValues, bloqueando a conexão com todos os outros repositórios Git remotos, ouDeny all. O padrão éAllow all. Uma política da organização não definida permite a comunicação com todos os repositórios Git remotos. Recomendamos definir a política da organização comoallowedValues.Cabe a você ou a um administrador com as permissões necessárias gerenciar e manter a política. Garanta a comunicação sobre o administrador de políticas na sua organização.
Definir a restrição de política da organização no nível da organização
Console
- Acesse a página /Políticas organizacionais/Políticas organizacionais.
- Se necessário, selecione a organização no menu suspenso do projeto.
- Clique em Restringir gits remotos em repositórios no Dataform.
- Clique em Gerenciar política. Se não for possível clicar no botão Gerenciar política, você não tem as permissões corretas.
Selecione Personalizar para definir a política da organização para repositórios Git remotos específicos.
Selecione as opções Aplicação da política e Tipo de política.
Em Valores da política, selecione Personalizada.
Insira o URL completo de um repositório Git remoto.
Clique em Novo valor de política e insira os URLs completos dos repositórios Git remotos, conforme necessário.
Clique em Salvar para aplicar a restrição.
gcloud
Para definir uma restrição para repositórios Git remotos, você precisa primeiro do ID da sua organização. Encontre o ID da organização executando o
organizations list comando e
procurando pelo ID numérico na resposta:
gcloud organizations list
A CLI gcloud retorna uma lista de organizações no seguinte formato:
DISPLAY_NAME ID example-organization1 29252605212 example-organization2 1234567890
Use o
gcloud resource-manager org-policies set-policy comando
para definir a política da organização. Será preciso fornecer a política como um arquivo JSON ou YAML.
Crie um arquivo JSON no seguinte formato:
{
"name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"values": {
"allowedValues": ["https://github.com/example/allowed-repository.git"]
}
}
]
}
}
Substitua ORGANIZATION_ID pelo ID numérico da organização.
Se você não quiser que os repositórios do Dataform possam se conectar a nenhum repositório Git remoto, defina uma política da organização com denyAll definido como true:
{
"name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"denyAll": true
}
]
}
}
Substitua ORGANIZATION_ID pelo ID numérico da organização.
API
Use a
setOrgPolicy() API
para definir a restrição. O Dataform pode se conectar aos URLs de repositórios Git remotos na lista allowedValues especificada.
Por exemplo, a seguir está uma solicitação para aplicar a restrição dataform.restrictGitRemotes a uma organização em que os repositórios Git remotos selecionados podem se conectar aos repositórios do Dataform:
POST https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies
em que ORGANIZATION_ID é o ID numérico da organização.
No corpo da solicitação, forneça a política da organização desejada para essa restrição:
{
"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.
Se você não quiser que os repositórios do Dataform possam se conectar a nenhum repositório Git remoto, defina uma política da organização com denyAll definido como 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.
Se a política da organização já estiver definida, execute a solicitação a seguir com a definição da política da organização como corpo da solicitação:
PATCH https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes
Definir a política da organização no nível do projeto
A definição de uma política da organização no nível do projeto substitui ou é mesclada com a política da organização no nível da organização. Em caso de mesclagem, denyAll tem precedência sobre allowedValues. Por exemplo, se a política da organização no nível da organização estiver definida como denyAll e a política mesclada no nível do projeto listar um URL de repositório remoto na lista allowedValues, o Dataform não poderá se conectar ao repositório remoto. Nesse caso, a política da organização no nível do projeto precisa substituir a política no nível da organização para que o Dataform possa se conectar ao repositório remoto. Para saber mais sobre a hierarquia de políticas da organização, consulte Noções básicas sobre a avaliação da hierarquia.
Console
Siga o mesmo processo documentado em Definir a restrição de política da organização no nível da organização, mas escolha o projeto desejado no seletor de projetos, em vez da organização.
gcloud
Use o
gcloud resource-manager org-policies set-policy comando
para definir a política da organização. Será preciso fornecer a política como um arquivo JSON ou YAML.
Crie um arquivo JSON no seguinte formato:
{
"name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"values": {
"allowedValues": ["https://github.com/example/allowed-repository.git"]
}
}
]
}
}
Substitua PROJECT_ID_OR_NUMBER pelo ID do projeto ou número do projeto para essa política da organização.
Depois, passe o arquivo com sua solicitação:
gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=PROJECT_ID
API
Use a
setOrgPolicy() API
para definir a restrição. O Dataform pode se conectar aos URLs de repositórios Git remotos na lista allowedValues especificada.
Por exemplo, a seguir está uma solicitação para aplicar a
dataform.restrictGitRemotes restrição a uma organização em que os
repositórios do Dataform só podem se conectar aos
repositórios Git remotos selecionados e a constraints/dataform.restrictGitRemotes
política ainda não está definida:
POST https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies
O corpo da solicitação contém a política da organização desejada para essa restrição:
{
"name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"values": {
"allowedValues": ["https://github.com/example/allowed-repository.git"]
}
}
]
}
}
Substitua PROJECT_ID_OR_NUMBER pelo ID do projeto ou número do projeto para esta solicitação.
A seguir está uma solicitação para aplicar a
dataform.restrictGitRemotes restrição a uma organização em que os
repositórios do Dataform só podem se conectar aos
repositórios Git remotos selecionados e
a constraints/dataform.restrictGitRemotes política já está definida:
PATCH https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes
O corpo da solicitação contém a política da organização desejada para essa restrição:
{
"name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
"spec": {
"rules": [
{
"values": {
"allowedValues": ["https://github.com/example/allowed-repository.git"]
}
}
]
}
}
Substitua PROJECT_ID_OR_NUMBER pelo ID do projeto ou número do projeto para esta solicitação.
Práticas recomendadas para permitir gits remotos
Para reduzir o risco de exfiltração de dados, defina explicitamente a restrição
dataform.restrictGitRemotespara permitir uma seleção de repositórios Git remotos confiáveis.Se você usar apenas repositórios do Dataform que não estão conectados a repositórios Git remotos, defina a restrição
dataform.restrictGitRemotescomoDeny All.Evite usar a lista
deniedValuescom essa restrição. Se você definir valores na listadeniedValues, significa que apenas os repositórios Git remotos na listadeniedValuesestão restritos de conexão. Essa pode ser uma preocupação de segurança se você quiser controlar exatamente a quais repositórios Git remotos o Dataform pode se conectar. Se você quiser remover determinados repositórios Git remotos da listaallowedValues, atualize a política da organização atual para removê-los da listaallowedValuesem vez de colocar o controle remoto na listadeniedValuesem uma hierarquia inferior.Se você quiser definir uma política da organização em grande parte da hierarquia de recursos, mas excluir determinados projetos, restaure a política da organização padrão usando o
setOrgPolicymétodo. Para isso, especifique orestoreDefaultobjeto para permitir que todos os repositórios do Dataform nos projetos sejam conectados a repositórios Git remotos. As políticas atualmente em vigor para projetos não são afetadas pela configuração padrão.Use a política da organização com os papéis do IAM para controlar melhor o acesso à sua base de código do Dataform.
Todos os repositórios do Dataform na organização ou no projeto com a política da organização ativada estão sujeitos a essa política. Se isso for um problema, recomendamos configurar outros serviços e produtos em um projeto diferente sem a aplicação da política da organização. Se necessário, use a VPC compartilhada.
Antes de definir a política
dataform.restrictGitRemotes, garanta a comunicação sobre a política da organização e o administrador dela na sua organização. Cabe a você ou a um administrador com as permissões necessárias gerenciar e manter a política.
A seguir
- Para saber mais sobre a política da organização, consulte Introdução ao serviço de políticas da organização.
- Para saber mais sobre as restrições de políticas da organização, consulte Restrições de políticas da organização.
- Para saber como gerenciar Google Cloud recursos com o Resource Manager, consulte Gerenciar seus Google Cloud recursos.