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:
No Google Cloud console, acesse a página Dataform.
Selecione um repositório e clique em Configurações.
Os URLs dos repositórios remotos mostrados na página Dataform são abreviados e não podem ser usados na política
dataform.restrictGitRemotes.Na página Configurações, em Configurações de conexão do Git, copie o valor de Origem do repositório.
O valor Origem do repositório é o URL completo do repositório remoto. É possível 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 a que os repositórios do Dataform podem se conectar para evitar que agentes maliciosos acessem a base de código do Dataform e os tokens de acesso por cópias desprotegidas do repositório.
Use o serviço de política da organização para criar uma política que restringe os URLs de repositório Git a que o Dataform pode se conectar.
A restrição para restringir 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íticadataform.restrictGitRemotes tem um efeito retroativo, o que significa que a restrição afeta 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 repositórios do Dataform e 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 sua organização não quiser bloquear nenhuma comunicação com repositórios remotos. Se quiser permitir todos os URLs de repositórios remotos, deixe a política da organização sem definição.
allowedValueslista de URLs- Os repositórios do Dataform só podem se conectar aos repositórios remotos na lista de permissões. Selecione essa opção para evitar a exfiltração de dados.
Deny all- Os repositórios do Dataform não podem se conectar a URLs remotos. Selecione essa opção se sua 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 do GitHub e do 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 da política 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 /Organizational Policies/Organization Policies.
- 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 da 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 do ID da organização. Encontre o ID da organização executando o comando organizations list 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 comando gcloud resource-manager org-policies set-policy para definir a política da organização. É necessário 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 se conectem a
repositórios Git remotos, 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 API setOrgPolicy() para definir a restrição. O Dataform pode se conectar aos URLs de repositórios Git remotos na lista allowedValue especificada.
Por exemplo, a seguir há uma solicitação para aplicar a restrição dataform.restrictGitRemotes em uma organização em que repositórios Git remotos selecionados do Dataform podem se conectar:
POST https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies
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 se conectem a
repositórios Git remotos, 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 seguinte solicitação 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
Definir uma política da organização no nível do projeto substitui ou mescla com a política da organização no nível da organização. Em caso de uma fusão, denyAll tem precedência sobre allowedValues. Por exemplo, se a política organizacional 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 das 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 comando gcloud resource-manager org-policies set-policy para definir a política da organização. É necessário 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 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 API setOrgPolicy() para definir a restrição. O Dataform pode se conectar aos URLs de repositórios Git remotos na lista allowedValue especificada.
Por exemplo, a solicitação a seguir aplica a restrição dataform.restrictGitRemotes a uma organização em que os repositórios do Dataform só podem se conectar aos repositórios Git remotos selecionados, e a política constraints/dataform.restrictGitRemotes 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 ou número do projeto para esta solicitação.
A seguir, há uma solicitação para aplicar a restrição dataform.restrictGitRemotes a uma organização em que os repositórios do Dataform só podem se conectar aos repositórios Git remotos selecionados e a política constraints/dataform.restrictGitRemotes 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 ou número do projeto para esta solicitação.
Práticas recomendadas para permitir remotos do Git
Para reduzir o risco de exfiltração de dados, defina explicitamente a restrição
dataform.restrictGitRemotespara permitir uma lista de repositórios Git remotos confiáveis.Se você usa 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 listadeniedValuesestarão restritos de conexão. Essa pode ser uma preocupação de segurança se você quer 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 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 padrão usando o método
setOrgPolicy. Para isso, especifique o objetorestoreDefaultpara 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 à base de código do Dataform.
Todos os repositórios do Dataform na organização ou no projeto com a política organizacional 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, informe a organização sobre a política e o administrador dela. 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ítica da organização.
- Para saber mais sobre as restrições da política da organização, consulte Restrições da política da organização.
- Para saber como gerenciar recursos Google Cloud com o Resource Manager, consulte Gerenciar recursos Google Cloud .