Limitare i repository remoti

Questo documento mostra come utilizzare il servizio Policy dell'organizzazione per limitare il pool di repository Git remoti di terze parti a cui i repository Dataform possono connettersi.

Prima di iniziare

Prima di impostare o modificare la policy dataform.restrictGitRemotes, trova gli URL completi dei repository Git remoti che vuoi aggiungere alla lista consentita.

Per trovare l'URL completo di un repository Git remoto già connesso a un repository Dataform, segui questi passaggi:

  1. Nella Google Cloud console, vai alla pagina Dataform.

    Vai a Dataform

  2. Seleziona un repository, quindi fai clic su Impostazioni.

    Tieni presente che gli URL dei repository remoti visualizzati nella pagina Dataform sono abbreviati e non possono essere utilizzati nella dataform.restrictGitRemotes policy.

  3. Nella pagina Impostazioni, in Impostazioni connessione Git, copia il valore di Origine repository.

    Il valore di Origine repository è l'URL completo del repository remoto. Puoi utilizzare questo URL nella policy dataform.restrictGitRemotes.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire le policy dell'organizzazione, chiedi all'amministratore di concederti il ruolo IAM Amministratore delle policy dell'organizzazione (roles/orgpolicy.policyAdmin) sull'organizzazione. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per gestire le policy dell'organizzazione. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per gestire le policy dell'organizzazione sono richieste le seguenti autorizzazioni:

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Informazioni sulla limitazione dei repository Git remoti

Puoi connettere un repository Dataform a un repository GitHub o GitLab.

Potresti voler limitare il pool di repository remoti a cui i repository Dataform possono connettersi per impedire ai malintenzionati di accedere al codebase e ai token di accesso di Dataform tramite copie non protette del repository.

Puoi utilizzare il servizio Policy dell'organizzazione per creare una policy dell'organizzazione che limiti gli URL dei repository Git a cui Dataform può connettersi.

Il vincolo per limitare i repository Git remoti in Dataform è:

constraints/dataform.restrictGitRemotes

Per utilizzare il vincolo, crea una policy dell'organizzazione con un elenco allowedValues di URL di repository Git remoti che possono connettersi a un repository Dataform. I repository Git remoti vengono identificati dal loro indirizzo URL completo.

La policy dataform.restrictGitRemotes ha un effetto retroattivo, il che significa che il vincolo influisce sui repository Dataform preesistenti.

Quando la policy dell'organizzazione è attiva, il repository Dataform può connettersi solo ai repository Git remoti elencati nell'elenco allowedValues. I repository Git remoti non definiti esplicitamente nella policy dell'organizzazione non possono connettersi a un repository Dataform.

Se non imposti la policy dataform.restrictGitRemotes, la comunicazione tra i repository Dataform e i repository Git remoti non è limitata.

Puoi utilizzare la policy dataform.restrictGitRemotes nei seguenti modi:

Allow all
I repository Dataform possono connettersi a tutti gli URL dei repository remoti. Seleziona questa opzione se la tua organizzazione non vuole bloccare alcuna comunicazione con i repository remoti. In alternativa, per consentire tutti gli URL dei repository remoti, puoi lasciare la policy dell'organizzazione non impostata.
Elenco allowedValues di URL
I repository Dataform possono connettersi solo ai repository remoti inclusi nella lista consentita. Seleziona questa opzione per impedire l'esfiltrazione dei dati.
Deny all
I repository Dataform non possono connettersi a nessun URL remoto. Seleziona questa opzione se la tua organizzazione vuole bloccare tutte le comunicazioni e utilizzare i repository Dataform.

Specifiche per l'inserimento nella lista consentita dei repository Git remoti

  • Puoi applicare questo vincolo di elenco solo ai repository GitHub e GitLab.

  • La policy dell'organizzazione viene applicata in modo retroattivo e influisce sui repository Dataform esistenti.

  • Questo vincolo accetta allowedValues, bloccando la connessione a tutti gli altri repository Git remoti, o Deny all. Il valore predefinito è Allow all - una policy dell'organizzazione non impostata consente la comunicazione con tutti i repository Git remoti. Ti consigliamo di impostare la policy dell'organizzazione su allowedValues.

  • Spetta a te o a un amministratore con le autorizzazioni richieste gestire e mantenere la policy. Assicurati che la comunicazione relativa all'amministratore della policy avvenga all'interno della tua organizzazione.

Imposta il vincolo della policy dell'organizzazione a livello di organizzazione

Console

  1. Vai alla pagina /Policy dell'organizzazione/Policy dell'organizzazione.

    Vai a Policy dell'organizzazione

  2. Se necessario, seleziona l'organizzazione richiesta dal menu a discesa del progetto.
  3. Fai clic su Limita i git remote per i repository in Dataform.
  4. Fai clic su Gestisci policy. Se non riesci a fare clic sul pulsante Gestisci policy, significa che non disponi delle autorizzazioni corrette.
  5. Seleziona Personalizza per impostare la policy dell'organizzazione per repository Git remoti specifici.

    Opzione Personalizza nella pagina di modifica della policy dell'organizzazione.

  6. Seleziona Applicazione policy e Tipo di policy.

  7. In Valori policy, seleziona Personalizzato.

  8. Inserisci l'URL completo di un repository Git remoto.

  9. Fai clic su Nuovo valore policy e inserisci gli URL completi dei repository Git remoti secondo necessità.

  10. Fai clic su Salva per applicare il vincolo.

gcloud

Per impostare un vincolo per i repository Git remoti, devi prima conoscere l'ID della tua organizzazione. Per trovare l'ID dell'organizzazione esegui il organizations list comando e cerca l'ID numerico nella risposta:

gcloud organizations list

gcloud CLI restituisce un elenco di organizzazioni nel seguente formato:

DISPLAY_NAME               ID
example-organization1      29252605212
example-organization2      1234567890

Utilizza il gcloud resource-manager org-policies set-policy comando per impostare la policy dell'organizzazione. Devi fornire le policy come file JSON o YAML. Crea un file JSON nel seguente formato:

{
  "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

Sostituisci ORGANIZATION_ID con l'ID numerico dell'organizzazione.

Se non vuoi che i repository Dataform possano connettersi a repository Git remoti, puoi impostare una policy dell'organizzazione con denyAll impostato su true:

{
  "name": "organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "denyAll": true
      }
    ]
  }
}

Sostituisci ORGANIZATION_ID con l'ID numerico dell'organizzazione.

API

Utilizza l' setOrgPolicy() API per definire il vincolo. Dataform può connettersi agli URL dei repository Git remoti nell'elenco allowedValues che hai specificato.

Ad esempio, di seguito è riportata una richiesta di applicazione del vincolo dataform.restrictGitRemotes a un'organizzazione in cui i repository Dataform possono connettersi a repository Git remoti selezionati:

POST https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies

dove ORGANIZATION_ID è l'ID numerico dell'organizzazione.

Ora, nel corpo della richiesta, fornisci la policy dell'organizzazione desiderata per questo vincolo:

{
  "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 non vuoi che i repository Dataform possano connettersi a repository Git remoti, puoi impostare una policy dell'organizzazione con denyAll impostato su 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 la policy dell'organizzazione è già impostata, devi eseguire la seguente richiesta con la definizione della policy dell'organizzazione come corpo della richiesta:

PATCH https://orgpolicy.googleapis.com/v2/organizations/ORGANIZATION_ID/policies/dataform.restrictGitRemotes

Imposta la policy dell'organizzazione a livello di progetto

L'impostazione di una policy dell'organizzazione a livello di progetto sostituisce o si unisce alla policy dell'organizzazione a livello di organizzazione. In caso di unione, denyAll ha la precedenza su allowedValues. Ad esempio, se la policy dell'organizzazione a livello di organizzazione è impostata su denyAll e la policy unita a livello di progetto elenca un URL di repository remoto nell'elenco allowedValues, Dataform non può connettersi al repository remoto. In questo caso, la policy dell'organizzazione a livello di progetto deve sostituire la policy a livello di organizzazione, in modo che Dataform possa connettersi al repository remoto. Per saperne di più sulla gerarchia delle policy dell'organizzazione, consulta Informazioni sulla valutazione della gerarchia.

Console

Segui la stessa procedura descritta in Imposta il vincolo della policy dell'organizzazione a livello di organizzazione, ma scegli il progetto desiderato dal selettore dei progetti, anziché dall' organizzazione.

Selettore di progetti.

gcloud

Utilizza il gcloud resource-manager org-policies set-policy comando per impostare la policy dell'organizzazione. Devi fornire le policy come file JSON o YAML.

Crea un file JSON nel seguente formato:

{
  "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

Sostituisci PROJECT_ID_OR_NUMBER con l'ID progetto o il numero del progetto per questa policy dell'organizzazione.

Quindi, passa il file con la richiesta:

gcloud resource-manager org-policies set-policy MY_POLICY.JSON --project=PROJECT_ID

API

Utilizza l' setOrgPolicy() API per definire il vincolo. Dataform può connettersi agli URL dei repository Git remoti nell'elenco allowedValues che hai specificato.

Ad esempio, di seguito è riportata una richiesta di applicazione del dataform.restrictGitRemotes vincolo a un'organizzazione in cui i repository Dataform possono connettersi solo ai repository Git remoti selezionati e la policy constraints/dataform.restrictGitRemotes non è ancora impostata:

POST https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies

Il corpo della richiesta contiene la policy dell'organizzazione desiderata per questo vincolo:

{
  "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

Sostituisci PROJECT_ID_OR_NUMBER con l'ID progetto o il numero del progetto per questa richiesta.

Di seguito è riportata una richiesta di applicazione del dataform.restrictGitRemotes vincolo a un'organizzazione in cui i repository Dataform possono connettersi solo ai repository Git remoti selezionati e la constraints/dataform.restrictGitRemotes policy è già impostata:

PATCH https://orgpolicy.googleapis.com/v2/projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes

Il corpo della richiesta contiene la policy dell'organizzazione desiderata per questo vincolo:

{
  "name": "projects/PROJECT_ID_OR_NUMBER/policies/dataform.restrictGitRemotes",
  "spec": {
    "rules": [
      {
        "values": {
          "allowedValues": ["https://github.com/example/allowed-repository.git"]
        }
      }
    ]
  }
}

Sostituisci PROJECT_ID_OR_NUMBER con l'ID progetto o il numero del progetto per questa richiesta.

Best practice per l'inserimento nella lista consentita dei git remote

  • Per ridurre il rischio di esfiltrazione di dati, imposta esplicitamente il vincolo dataform.restrictGitRemotes per inserire nella lista consentita una selezione di repository Git remoti attendibili.

  • Se utilizzi solo repository Dataform non connessi a repository Git remoti, imposta il vincolo dataform.restrictGitRemotes su Deny All.

  • Evita di utilizzare l'elenco deniedValues con questo vincolo. Se definisci valori nell'elenco deniedValues, solo i repository Git remoti nell'elenco deniedValues sono limitati dalla connessione. Questo potrebbe rappresentare un problema di sicurezza se vuoi controllare esattamente a quali repository Git remoti Dataform può connettersi. Se vuoi rimuovere determinati repository Git remoti dall'elenco allowedValues, aggiorna la policy dell'organizzazione esistente per rimuoverli dall'elenco allowedValues anziché inserirli nell'elenco deniedValues in una gerarchia inferiore.

  • Se vuoi impostare una policy dell'organizzazione su gran parte della gerarchia delle risorse, ma esentare determinati progetti, ripristina la policy dell'organizzazione predefinita utilizzando il setOrgPolicy metodo specificando l'restoreDefault oggetto per consentire la connessione di tutti i repository Dataform nei progetti a repository Git remoti. Le policy attualmente in vigore per i progetti non sono interessate dall'impostazione predefinita.

  • Utilizza la policy dell'organizzazione insieme ai ruoli IAM per controllare meglio l'accesso al codice base di Dataform.

  • Tutti i repository Dataform all'interno dell'organizzazione o del progetto con la policy dell'organizzazione abilitata sono soggetti a questa policy. Se è un problema, ti consigliamo di configurare altri servizi e prodotti in un progetto diverso, a cui non è applicata la policy dell'organizzazione, e di utilizzare VPC condiviso, se necessario.

  • Prima di impostare la policy dataform.restrictGitRemotes, assicurati che la comunicazione relativa alla policy dell'organizzazione e al relativo amministratore avvenga all'interno della tua organizzazione. Spetta a te o a un amministratore con le autorizzazioni richieste gestire e mantenere la policy.

Passaggi successivi