Antes de começar
Antes de definir ou editar a política dataform.restrictGitRemotes
, encontre os URLs completos
dos repositórios Git remotos que quer incluir na lista de autorizações.
Para encontrar o URL completo de um repositório Git remoto que já esteja associado a um repositório do Dataform, siga estes passos:
Na Google Cloud consola, aceda à página Dataform.
Selecione um repositório e, de seguida, clique em Definições.
Tenha em atenção que os URLs de repositórios remotos apresentados na página do Dataform são abreviados e não podem ser usados na política
dataform.restrictGitRemotes
.Na página Definições, em Definições de ligação Git, copie o valor de Origem do repositório.
O valor Origem do repositório é o URL completo do repositório remoto. Pode usar este URL na política
dataform.restrictGitRemotes
.
Funções necessárias
Para receber as autorizações de que precisa para gerir políticas de organização,
peça ao seu administrador que lhe conceda a função de IAM de
administrador de políticas de organização (roles/orgpolicy.policyAdmin
)
na organização.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém as autorizações necessárias para gerir políticas da organização. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para gerir 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
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Acerca da restrição de repositórios Git remotos
Pode associar um repositório do Dataform a um repositório do GitHub ou do GitLab.
Pode querer restringir o conjunto de repositórios remotos aos quais os repositórios do Dataform se podem ligar para impedir que atores maliciosos acedam à sua base de código do Dataform e aos tokens de acesso através de cópias não protegidas do seu repositório.
Pode usar o serviço de políticas da organização para criar uma política da organização que restringe os URLs do repositório Git aos quais o Dataform se pode ligar.
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
allowedValues
lista de URLs
de repositórios Git remotos que podem estabelecer ligação a um repositório do Dataform.
Os repositórios Git remotos são identificados pelo respetivo 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 pré-existentes.
Quando a política da organização está em vigor, o repositório do Dataform só pode estabelecer ligação aos repositórios Git remotos que estão listados na lista allowedValues
. Os repositórios Git remotos que não estão explicitamente definidos na política da organização estão proibidos de se ligarem a um repositório do Dataform.
Se 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 é restrita.
Pode usar a dataform.restrictGitRemotes
política
das seguintes formas:
Allow all
- Os repositórios do Dataform podem ligar-se a todos os URLs de repositórios remotos. Selecione esta opção se a sua organização não quiser bloquear nenhuma comunicação com repositórios remotos. Em alternativa, para permitir todos os URLs de repositórios remotos, pode deixar a política da organização não definida.
allowedValues
lista de URLs- Os repositórios do Dataform só podem estabelecer ligação aos repositórios remotos na lista de autorizações. Selecione esta opção para impedir a exfiltração de dados.
Deny all
- Os repositórios do Dataform não podem estabelecer ligação a URLs remotos. Selecione esta opção se a sua organização quiser bloquear todas as comunicações e usar repositórios do Dataform.
Especificações para a inclusão na lista de autorizações de repositórios Git remotos
Pode aplicar esta restrição de lista apenas a repositórios do GitHub e GitLab.
A política da organização é aplicada retroativamente e afeta os repositórios do Dataform existentes.
Esta restrição aceita
allowedValues
, bloqueando a ligação a todos os outros repositórios Git remotos, ouDeny all
. A predefinição éAllow all
. Uma política organizacional não definida permite a comunicação com todos os repositórios Git remotos. Recomendamos que defina a política da organização comoallowedValues
.É da sua responsabilidade ou de um administrador com as autorizações necessárias gerir e manter a política. Certifique-se de que existe comunicação sobre o administrador de políticas na sua organização.
Defina a restrição da política da organização ao nível da organização
Consola
- Aceda à página /Organizational Policies/Organization Policies.
- Se necessário, selecione a organização necessária no menu pendente do projeto.
- Clique em Restringir remotos do Git para repositórios no Dataform.
- Clique em Gerir política. Se não conseguir clicar no botão Gerir política, não tem as autorizações corretas.
Selecione Personalizar para definir a política da organização para repositórios Git remotos específicos.
Selecione a Aplicação de políticas e o Tipo de política necessários.
Para Valores da política, selecione Personalizado.
Introduza o URL completo de um repositório Git remoto.
Clique em Novo valor da política e introduza os URLs completos dos repositórios Git remotos conforme necessário.
Clique em Guardar para aplicar a restrição.
gcloud
Para definir uma restrição para repositórios Git remotos, primeiro precisa do ID da sua organização. Pode encontrar o ID da organização executando o comando organizations list
e procurando o ID numérico na resposta:
gcloud organizations list
A CLI gcloud devolve 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. Tem de fornecer a sua política como um ficheiro JSON ou YAML.
Crie um ficheiro 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 não quiser que os repositórios do Dataform possam estabelecer ligação a quaisquer repositórios Git remotos, pode definir 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 tem autorização para se ligar aos URLs do repositório Git remoto na lista allowedValue
que especificar.
Por exemplo, o seguinte é um pedido para aplicar a restrição dataform.restrictGitRemotes
a uma organização à qual os repositórios Dataform de repositórios Git remotos selecionados se podem ligar:
POST https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies
onde ORGANIZATION_ID
é o ID numérico da organização.
Agora, no corpo do pedido, indique a política de organização pretendida para esta 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 não quiser que os repositórios do Dataform possam estabelecer ligação a repositórios Git remotos, pode definir 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, tem de executar o seguinte pedido com a definição da política da organização como corpo do pedido:
PATCH https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes
Defina a política de organização ao nível do projeto
A definição de uma política de organização ao nível do projeto substitui ou é unida à política de organização ao nível da organização. Em caso de união, denyAll
tem prioridade sobre allowedValues
. Por exemplo, se a política organizacional ao nível da organização estiver definida como denyAll
e a política unida ao nível do projeto apresentar um URL de repositório remoto na lista allowedValues
, o Dataform não tem autorização para se ligar ao repositório remoto. Nesse caso, a política da organização ao nível do projeto tem de substituir a política ao nível da organização para que o Dataform possa estabelecer ligação ao repositório remoto. Para saber mais sobre a hierarquia da política da organização, consulte o artigo Compreender a avaliação da hierarquia.
Consola
Siga o mesmo processo documentado em Defina a restrição da política da organização ao nível da organização, mas escolha o projeto pretendido 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. Tem de fornecer a sua política como um ficheiro JSON ou YAML.
Crie um ficheiro 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 pelo número do projeto desta política de organização.
Em seguida, transmita o ficheiro com o seu pedido:
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 tem autorização para se ligar aos URLs do repositório Git remoto na lista allowedValue
que especificar.
Por exemplo, o seguinte é um pedido para aplicar a restrição dataform.restrictGitRemotes
a uma organização onde os repositórios do Dataform só podem estabelecer ligação 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 do pedido contém a política de organização pretendida para esta 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 pelo número do projeto para este pedido.
Segue-se um pedido para aplicar a restrição dataform.restrictGitRemotes
a uma organização onde os repositórios do Dataform só podem estabelecer ligação 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 do pedido contém a política de organização pretendida para esta 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 pelo número do projeto para este pedido.
Práticas recomendadas para a inclusão na lista de autorizações de repositórios Git remotos
Para mitigar o risco de exfiltração de dados, defina explicitamente a restrição
dataform.restrictGitRemotes
para permitir uma seleção de repositórios Git remotos fidedignos.Se usar apenas repositórios do Dataform que não estejam ligados a repositórios Git remotos, defina a restrição
dataform.restrictGitRemotes
comoDeny All
.Evite usar a lista
deniedValues
com esta restrição. Se definir valores na listadeniedValues
, significa que apenas os repositórios Git remotos na listadeniedValues
têm restrições de ligação. Isto pode ser uma preocupação de segurança se quiser controlar exatamente a que repositórios Git remotos o Dataform se pode ligar. Se quiser remover determinados repositórios Git remotos da listaallowedValues
, atualize a política da organização existente para os remover da listaallowedValues
, em vez de colocar o repositório remoto na listadeniedValues
numa hierarquia inferior.Se quiser definir uma política de organização sobre uma grande parte da hierarquia de recursos, mas isentar determinados projetos, restaure a política de organização predefinida através do método
setOrgPolicy
, especificando o objetorestoreDefault
para permitir que todos os repositórios do Dataform nos projetos sejam associados a repositórios Git remotos. As políticas atualmente em vigor para projetos não são afetadas pela predefinição.Use a política da organização juntamente com as funções 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 esta política. Se isto for um problema, recomendamos que configure outros serviços e produtos num projeto diferente que não tenha a política da organização aplicada e use a VPC partilhada, se necessário.
Antes de definir a política
dataform.restrictGitRemotes
, certifique-se de que existe comunicação sobre a política da organização e o respetivo administrador na sua organização. É da sua responsabilidade ou da responsabilidade de um administrador com as autorizações necessárias gerir e manter a política.
O que se segue?
- Para saber mais sobre a política de organização, consulte o artigo Introdução ao serviço de políticas de organização.
- Para saber mais sobre as restrições da política da organização, consulte o artigo Restrições da política da organização.
- Para saber como gerir Google Cloud recursos com o Resource Manager, consulte o artigo Faça a gestão dos seus Google Cloud recursos.