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 adicionar à lista de autorizações.
Para encontrar o URL completo de um repositório Git remoto que já esteja ligado 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 da organização,
peça ao seu administrador que lhe conceda a função de IAM de
administrador da política da 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.
Recomendamos que restrinja o conjunto de repositórios remotos aos quais os repositórios do Dataform podem estabelecer ligação para impedir que atores maliciosos acedam ao seu código base do Dataform e 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 estabelecer ligação 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.
allowedValueslista 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 de organização 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 onde os repositórios Git remotos selecionados se podem ligar aos repositórios Dataform:
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 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
}
]
}
}
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 da organização 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 pode estabelecer ligação 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.restrictGitRemotespara 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.restrictGitRemotescomoDeny All.Evite usar a lista
deniedValuescom esta restrição. Se definir valores na listadeniedValues, significa que apenas os repositórios Git remotos na listadeniedValuestê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 remoto na listadeniedValuesnuma 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
setOrgPolicyespecificando o objetorestoreDefaultpara 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 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.