Limita i repository remoti

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

Prima di iniziare

Prima di impostare o modificare il criterio dataform.restrictGitRemotes, trova gli URL completi dei repository Git remoti che vuoi inserire nella lista consentita.

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

  1. Nella console Google Cloud, 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 nel criterio dataform.restrictGitRemotes.

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

    Il valore Origine repository è l'URL completo del repository remoto. Puoi utilizzare questo URL nel criterio dataform.restrictGitRemotes.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per gestire i criteri dell'organizzazione, chiedi all'amministratore di concederti il ruolo IAM Amministratore dei criteri dell'organizzazione (roles/orgpolicy.policyAdmin) per l'organizzazione. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni necessarie per gestire i criteri dell'organizzazione. Per visualizzare le autorizzazioni necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per gestire i criteri dell'organizzazione sono necessarie 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 essere in grado di ottenere queste autorizzazioni con i 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 possono connettersi i repository Dataform per impedire a utenti malintenzionati di accedere al tuo codebase Dataform e ai token di accesso tramite copie non protette del tuo repository.

Puoi utilizzare il servizio Criteri dell'organizzazione per creare un criterio dell'organizzazione che limiti gli URL dei repository Git a cui Dataform può connettersi.

Il vincolo per la limitazione dei repository Git remoti in Dataform è:

constraints/dataform.restrictGitRemotes

Per utilizzare il vincolo, devi creare un criterio dell'organizzazione con un elenco allowedValues di URL di repository Git remoti che possono connettersi a un repository Dataform. I repository Git remoti sono identificati dall'indirizzo URL completo.

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

Quando il criterio dell'organizzazione è attivo, il repository Dataform può connettersi solo ai repository Git remoti elencati nell'elenco allowedValues. Ai repository Git remoti che non sono esplicitamente definiti nel criterio dell'organizzazione è vietato connettersi a un repository Dataform.

Se non imposti il criterio dataform.restrictGitRemotes, le comunicazioni tra i repository Dataform e i repository Git remoti non saranno limitate.

Puoi utilizzare il criterio 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 il criterio dell'organizzazione non impostato.
allowedValues elenco di URL
I repository Dataform possono connettersi solo ai repository remoti inclusi nella lista consentita. Seleziona questa opzione per impedire l'esfiltrazione di dati.
Deny all
I repository Dataform non possono connettersi a URL remoti. Seleziona questa opzione se la tua organizzazione vuole bloccare tutte le comunicazioni e utilizzare i repository Dataform.

Specifiche per i repository Git remoti nella lista consentita

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

  • Il criterio dell'organizzazione viene applicato in modo retroattivo e influisce sui repository Dataform esistenti.

  • Questo vincolo accetta allowedValues, bloccando la connessione a tutti gli altri repository Git remoti oppure Deny all. Il valore predefinito è Allow all: un criterio dell'organizzazione non configurato consente la comunicazione con tutti i repository Git remoti. Ti consigliamo di impostare il criterio dell'organizzazione su allowedValues.

  • Spetta a te o a un amministratore con le autorizzazioni necessarie gestire e mantenere il criterio. Garantisci la comunicazione relativa all'amministratore dei criteri all'interno dell'organizzazione.

Imposta il vincolo del criterio dell'organizzazione a livello di organizzazione

Console

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

    Vai a Criteri dell'organizzazione

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

    Opzione Personalizza nella pagina di modifica dei criteri dell'organizzazione.

  6. Seleziona le opzioni Applicazione dei criteri e Tipo di criterio richiesti.

  7. In Valori del criterio, seleziona Personalizzato.

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

  9. Fai clic su Nuovo valore del criterio e inserisci gli URL completi dei repository Git remoti in base alle esigenze.

  10. Fai clic su Salva per applicare il vincolo.

gcloud

Per impostare un vincolo per i repository Git remoti, devi prima l'ID organizzazione. Per trovare l'ID organizzazione, esegui il comando organizations list 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 comando gcloud resource-manager org-policies set-policy per impostare il criterio dell'organizzazione. Devi fornire il criterio 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 nessun repository Git remoto, puoi impostare un criterio 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'API setOrgPolicy() per definire il vincolo. Dataform è autorizzato a connettersi agli URL dei repository Git remoti nell'elenco allowedValue specificato.

Ad esempio, di seguito è riportata una richiesta per applicare il vincolo dataform.restrictGitRemotes a un'organizzazione in cui possono connettersi i repository Git remoti a cui possono connettersi i repository Dataform 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 il criterio dell'organizzazione desiderato 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 nessun repository Git remoto, puoi impostare un criterio 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 il criterio dell'organizzazione è già impostato, devi eseguire la richiesta seguente con la definizione del criterio dell'organizzazione come corpo della richiesta:

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

Imposta il criterio dell'organizzazione a livello di progetto

L'impostazione di un criterio dell'organizzazione a livello di progetto esegue l'override o l'unione con il criterio dell'organizzazione a livello di organizzazione. In caso di unione, denyAll ha la precedenza su allowedValues. Ad esempio, se il criterio dell'organizzazione a livello di organizzazione è impostato su denyAll e il criterio unito a livello di progetto elenca un URL del repository remoto nell'elenco allowedValues, Dataform non può connettersi al repository remoto. In tal caso, il criterio dell'organizzazione a livello di progetto deve eseguire l'override del criterio a livello di organizzazione, in modo che Dataform possa connettersi al repository remoto. Per saperne di più sulla gerarchia dei criteri dell'organizzazione, consulta Informazioni sulla valutazione della gerarchia.

Console

Segui la stessa procedura documentata in Impostare il vincolo del criterio dell'organizzazione a livello di organizzazione, ma scegli il progetto che preferisci dal selettore di progetti anziché dall'organizzazione.

Selettore di progetti.

gcloud

Utilizza il comando gcloud resource-manager org-policies set-policy per impostare il criterio dell'organizzazione. Devi fornire il criterio 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 o il numero di progetto per questo criterio dell'organizzazione.

Quindi, trasmetti il file con la tua richiesta:

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

API

Utilizza l'API setOrgPolicy() per definire il vincolo. Dataform è autorizzato a connettersi agli URL dei repository Git remoti nell'elenco allowedValue specificato.

Ad esempio, di seguito è riportata una richiesta per applicare il vincolo dataform.restrictGitRemotes a un'organizzazione in cui i repository Dataform possono connettersi solo ai repository Git remoti selezionati e il criterio constraints/dataform.restrictGitRemotes non è ancora impostato:

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

Il corpo della richiesta contiene il criterio dell'organizzazione desiderato 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 o il numero di progetto per questa richiesta.

Di seguito è riportata una richiesta per applicare il vincolo dataform.restrictGitRemotes a un'organizzazione in cui i repository Dataform possono connettersi solo ai repository Git remoti selezionati e il criterio constraints/dataform.restrictGitRemotes è già impostato:

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

Il corpo della richiesta contiene il criterio dell'organizzazione desiderato 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 o il numero di progetto per questa richiesta.

Best practice per l'inserimento dei telecomandi Git nella lista consentita

  • Per mitigare 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, significa che solo i repository Git remoti nell'elenco deniedValues sono limitati dalla connessione. Potrebbe trattarsi di un problema di sicurezza se vuoi controllare esattamente a quali repository Git remoti può connettersi Dataform. Se vuoi rimuovere determinati repository Git remoti dall'elenco allowedValues, aggiorna il criterio dell'organizzazione esistente per rimuoverli dall'elenco allowedValues invece di inserire il telecomando nell'elenco deniedValues in una gerarchia inferiore.

  • Se vuoi impostare un criterio dell'organizzazione su gran parte della gerarchia delle risorse, ma escludere determinati progetti, ripristina il criterio dell'organizzazione predefinito utilizzando il metodo setOrgPolicy specificando l'oggetto restoreDefault per consentire a tutti i repository Dataform nei progetti di connettersi ai repository Git remoti. I criteri attualmente attivi per i progetti non sono interessati dall'impostazione predefinita.

  • Utilizza i Criteri dell'organizzazione insieme ai ruoli IAM per controllare meglio l'accesso al codebase Dataform.

  • Tutti i repository Dataform all'interno dell'organizzazione o del progetto con il criterio dell'organizzazione abilitato sono soggetti a questo criterio. Se si tratta di un problema, ti consigliamo di configurare altri servizi e prodotti in un altro progetto a cui non è applicato il criterio dell'organizzazione e di utilizzare il VPC condiviso, se necessario.

  • Prima di impostare il criterio dataform.restrictGitRemotes, assicurati che la comunicazione relativa al criterio dell'organizzazione e al relativo amministratore all'interno dell'organizzazione. Spetta a te o a un amministratore con le autorizzazioni necessarie gestire e mantenere il criterio.

Passaggi successivi