Remote-Repositories einschränken

In diesem Dokument erfahren Sie, wie Sie mit dem Organization Policy Service den Pool der Remote-Git-Repositories von Drittanbietern einschränken, mit denen Dataform-Repositories eine Verbindung herstellen können.

Hinweis

Bevor Sie die dataform.restrictGitRemotes-Richtlinie festlegen oder bearbeiten, müssen Sie die vollständigen URLs der Remote-Git-Repositories ermitteln, die Sie auf die Zulassungsliste setzen möchten.

So finden Sie die vollständige URL eines Remote-Git-Repositories, das bereits mit einem Dataform-Repository verbunden ist:

  1. Öffnen Sie in der Google Cloud Console die Seite Dataform.

    Zu Dataform

  2. Wählen Sie ein Repository aus und klicken Sie auf Einstellungen.

    Hinweis: Die URLs der Remote-Repositories, die auf der Seite Dataform angezeigt werden, sind gekürzt und können nicht in der dataform.restrictGitRemotes-Richtlinie verwendet werden.

  3. Kopieren Sie auf der Seite Einstellungen unter Git-Verbindungseinstellungen den Wert für Repository-Quelle.

    Der Wert für Repository-Quelle ist die vollständige URL des Remote-Repositorys. Sie können diese URL in der dataform.restrictGitRemotes-Richtlinie verwenden.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Organization policy administrator (roles/orgpolicy.policyAdmin) für die Organisation zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Organisationsrichtlinien benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Verwalten von Organisationsrichtlinien erforderlich sind. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind für die Verwaltung von Organisationsrichtlinien erforderlich:

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

Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Remote-Git-Repositories einschränken

Sie können ein Dataform-Repository mit einem GitHub- oder GitLab-Repository verbinden.

Sie können den Pool der Remote-Repositories einschränken, zu denen Dataform-Repositories eine Verbindung herstellen können, um zu verhindern, dass böswillige Akteure über ungeschützte Kopien Ihres Repositories auf Ihre Dataform-Codebasis und Ihre Zugriffstokens zugreifen.

Mit dem Organisationsrichtliniendienst können Sie eine Organisationsrichtlinie erstellen, die einschränkt, mit welchen Git-Repository-URLs Dataform eine Verbindung herstellen kann.

Die Einschränkung für Remote-Git-Repositories in Dataform lautet:

constraints/dataform.restrictGitRemotes

Wenn Sie die Einschränkung verwenden möchten, erstellen Sie eine Organisationsrichtlinie mit einer allowedValues-Liste von URLs von Remote-Git-Repositories, die eine Verbindung zu einem Dataform-Repository herstellen können. Remote-Git-Repositories werden anhand ihrer vollständigen URL-Adresse identifiziert.

Diedataform.restrictGitRemotes-Richtlinie gilt rückwirkend, d. h. die Einschränkung wirkt sich auf bereits vorhandene Dataform-Repositories aus.

Wenn die Organisationsrichtlinie in Kraft ist, kann das Dataform-Repository nur eine Verbindung zu den Remote-Git-Repositories herstellen, die in der Liste allowedValues aufgeführt sind. Remote-Git-Repositories, die nicht explizit in der Organisationsrichtlinie definiert sind, dürfen keine Verbindung zu einem Dataform-Repository herstellen.

Wenn Sie die dataform.restrictGitRemotes-Richtlinie nicht festlegen, ist die Kommunikation zwischen Dataform-Repositories und Remote-Git-Repositories nicht eingeschränkt.

Sie können die dataform.restrictGitRemotes-Richtlinie auf folgende Arten verwenden:

Allow all
Dataform-Repositories dürfen eine Verbindung zu allen URLs von Remote-Repositories herstellen. Wählen Sie diese Option aus, wenn Ihre Organisation keine Kommunikation mit Remote-Repositories blockieren möchte. Alternativ können Sie die Organisationsrichtlinie auch nicht festlegen, um alle Remote-Repository-URLs zuzulassen.
allowedValues URL-Liste
Dataform-Repositories dürfen sich nur mit den auf der Zulassungsliste stehenden Remote-Repositories verbinden. Wählen Sie diese Option aus, um die Daten-Exfiltration zu verhindern.
Deny all
Dataform-Repositories dürfen keine Verbindung zu Remote-URLs herstellen. Wählen Sie diese Option aus, wenn Ihre Organisation die gesamte Kommunikation blockieren und Dataform-Repositories verwenden möchte.

Spezifikationen für die Zulassungsliste für Remote-Git-Repositories

  • Sie können die Listeneinschränkung nur auf GitHub- und GitLab-Repositories anwenden.

  • Die Organisationsrichtlinie wird rückwirkend angewendet und wirkt sich auf vorhandene Dataform-Repositories aus.

  • Für diese Einschränkung ist allowedValues zulässig, wodurch die Verbindung zu allen anderen Remote-Git-Repositories blockiert wird. Alternativ ist auch Deny all zulässig. Standardmäßig ist Allow all festgelegt. Eine nicht festgelegte Organisationsrichtlinie ermöglicht die Kommunikation mit allen Remote-Git-Repositories. Wir empfehlen, die Organisationsrichtlinie auf allowedValues festzulegen.

  • Für die Verwaltung und Pflege der Richtlinie sind Sie oder ein Administrator mit den entsprechenden Berechtigungen verantwortlich. Informieren Sie Ihre Organisation über den Richtlinienadministrator.

Richtlinieneinschränkung auf Organisationsebene festlegen

Console

  1. Rufen Sie die Seite /Organizational Policies/Organization Policies (Organisationsrichtlinien) auf.

    Zur Seite "Organisationsrichtlinien"

  2. Wählen Sie gegebenenfalls die erforderliche Organisation aus dem Drop-down-Menü des Projekts aus.
  3. Klicken Sie auf Git-Remotes für Repositories in Dataform einschränken.
  4. Klicken Sie auf Richtlinie verwalten. Wenn Sie nicht auf die Schaltfläche Richtlinie verwalten klicken können, fehlen Ihnen die erforderlichen Berechtigungen.
  5. Wählen Sie Anpassen aus, um die Organisationsrichtlinie für bestimmte Remote-Git-Repositories festzulegen.

    Option "Anpassen" auf der Seite zur Bearbeitung der Organisationsrichtlinie

  6. Wählen Sie die erforderlichen Richtlinienerzwingungen und den erforderlichen Richtlinientyp aus.

  7. Wählen Sie für Richtlinienwerte die Option Benutzerdefiniert aus.

  8. Geben Sie die vollständige URL eines Remote-Git-Repositories ein.

  9. Klicken Sie auf Neuer Richtlinienwert und geben Sie nach Bedarf vollständige URLs von Remote-Git-Repositories ein.

  10. Klicken Sie auf Speichern, um die Einschränkung anzuwenden.

gcloud

Wenn Sie eine Einschränkung für Remote-Git-Repositories einrichten möchten, benötigen Sie zuerst Ihre Organisations-ID. Sie können die Organisations-ID ermitteln, indem Sie den Befehl organizations list ausführen und in der Antwort nach der numerischen ID suchen:

gcloud organizations list

Die gcloud CLI gibt eine Liste der Organisationen im folgenden Format zurück:

DISPLAY_NAME               ID
example-organization1      29252605212
example-organization2      1234567890

Geben Sie die Richtlinie mit dem Befehl gcloud resource-manager org-policies set-policy an. Sie müssen die Richtlinie als JSON- oder YAML-Datei bereitstellen. Erstellen Sie eine JSON-Datei im folgenden Format:

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

Ersetzen Sie ORGANIZATION_ID durch die numerische ID der Organisation.

Wenn Dataform-Repositories keine Verbindung zu Remote-Git-Repositories herstellen sollen, können Sie eine Organisationsrichtlinie festlegen, in der denyAll auf true gesetzt ist:

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

Ersetzen Sie ORGANIZATION_ID durch die numerische ID der Organisation.

API

Verwenden Sie die setOrgPolicy() API, um die Einschränkung zu definieren. Dataform darf eine Verbindung zu den URLs der Remote-Git-Repositories in der von Ihnen angegebenen allowedValue-Liste herstellen.

Das folgende Beispiel zeigt eine Anfrage zum Anwenden der Einschränkung dataform.restrictGitRemotes für eine Organisation, in der ausgewählte Remote-Git-Repositories eine Verbindung zu Dataform-Repositories herstellen können:

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

wobei ORGANIZATION_ID die numerische ID der Organisation ist.

Geben Sie nun im Anfragetext die gewünschte Organisationsrichtlinie für diese Einschränkung an:

{
  "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.

Wenn Dataform-Repositories keine Verbindung zu Remote-Git-Repositories herstellen sollen, können Sie eine Organisationsrichtlinie festlegen, in der denyAll auf true gesetzt ist:

{
  "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.

Wenn die Organisationsrichtlinie bereits festgelegt ist, müssen Sie die folgende Anfrage mit der Definition der Organisationsrichtlinie als Anfragetext ausführen:

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

Organisationsrichtlinie auf Projektebene festlegen

Wenn Sie eine Organisationsrichtlinie auf Projektebene festlegen, wird die Organisationsrichtlinie auf Organisationsebene überschrieben oder zusammengeführt. Bei einer Zusammenführung hat denyAll Vorrang vor allowedValues. Wenn beispielsweise die Organisationsrichtlinie auf Organisationsebene auf denyAll festgelegt ist und die zusammengeführte Richtlinie auf Projektebene eine URL für ein Remote-Repository in der Liste allowedValues enthält, darf Dataform keine Verbindung zum Remote-Repository herstellen. In diesem Fall muss die Organisationsrichtlinie auf Projektebene die Richtlinie auf Organisationsebene überschreiben, damit Dataform eine Verbindung zum Remote-Repository herstellen kann. Weitere Informationen zur Hierarchie von Organisationsrichtlinien finden Sie unter Informationen zu Evaluierungen der Hierarchie.

Console

Führen Sie den gleichen Vorgang aus, der unter Richtlinieneinschränkungen auf Organisationsebene einrichten erläutert wird, aber wählen Sie anstelle der Organisation das gewünschte Projekt aus der Projektauswahl aus.

Projektauswahl

gcloud

Geben Sie die Richtlinie mit dem Befehl gcloud resource-manager org-policies set-policy an. Sie müssen die Richtlinie als JSON- oder YAML-Datei bereitstellen.

Erstellen Sie eine JSON-Datei im folgenden Format:

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

Ersetzen Sie PROJECT_ID_OR_NUMBER durch die Projekt-ID oder Projektnummer für diese Organisationsrichtlinie.

Übergeben Sie dann die Datei mit Ihrer Anfrage:

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

API

Verwenden Sie die setOrgPolicy() API, um die Einschränkung zu definieren. Dataform darf eine Verbindung zu den URLs der Remote-Git-Repositories in der von Ihnen angegebenen allowedValue-Liste herstellen.

Im folgenden Beispiel wird die Einschränkung dataform.restrictGitRemotes auf eine Organisation angewendet, in der Dataform-Repositories nur eine Verbindung zu den ausgewählten Remote-Git-Repositories herstellen können und die constraints/dataform.restrictGitRemotes-Richtlinie noch nicht festgelegt ist:

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

Der Anfragetext enthält die gewünschte Organisationsrichtlinie für diese Einschränkung:

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

Ersetzen Sie PROJECT_ID_OR_NUMBER durch die Projekt-ID oder Projektnummer für diese Anfrage.

Im Folgenden wird die Anwendung der Einschränkung dataform.restrictGitRemotes auf eine Organisation angefordert, in der Dataform-Repositories nur eine Verbindung zu den ausgewählten Remote-Git-Repositories herstellen können und die Richtlinie constraints/dataform.restrictGitRemotes bereits festgelegt ist:

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

Der Anfragetext enthält die gewünschte Organisationsrichtlinie für diese Einschränkung:

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

Ersetzen Sie PROJECT_ID_OR_NUMBER durch die Projekt-ID oder Projektnummer für diese Anfrage.

Best Practices für die Zulassungsliste von Git-Remotes

  • Um das Risiko der Datenexfiltration zu verringern, legen Sie die Einschränkung dataform.restrictGitRemotes explizit so fest, dass eine Auswahl vertrauenswürdiger Remote-Git-Repositories auf die Zulassungsliste gesetzt wird.

  • Wenn Sie nur Dataform-Repositories verwenden, die nicht mit Remote-Git-Repositories verbunden sind, legen Sie die Einschränkung dataform.restrictGitRemotes auf Deny All fest.

  • Vermeiden Sie die Verwendung der deniedValues-Liste mit dieser Einschränkung. Wenn Sie Werte in der Liste deniedValues definieren, bedeutet das, dass nur die Remote-Git-Repositories in der Liste deniedValues keine Verbindung herstellen dürfen. Dies könnte zu Sicherheitsproblemen führen, wenn Sie genau steuern möchten, mit welchen Remote-Git-Repositories Dataform eine Verbindung herstellen kann. Wenn Sie bestimmte Remote-Git-Repositories aus der Liste allowedValues entfernen möchten, aktualisieren Sie die vorhandene Organisationsrichtlinie, um sie aus der Liste allowedValues zu entfernen, anstatt das Remote-Repository in die Liste deniedValues mit einer niedrigeren Hierarchie aufzunehmen.

  • Wenn Sie eine Organisationsrichtlinie für einen großen Teil der Ressourcenhierarchie einrichten, aber bestimmte Projekte ausnehmen möchten, stellen Sie die Standard-Organisationsrichtlinie mit der Methode setOrgPolicy wieder her. Geben Sie dazu das Objekt restoreDefault an. Dadurch lassen Sie zu, dass alle Dataform-Repositories in den Projekten mit Remote-Git-Repositories verbunden werden. Die bestehenden Richtlinien für Projekte sind von der Standardeinstellung nicht betroffen.

  • Verwenden Sie die Organisationsrichtlinie zusammen mit IAM-Rollen, um den Zugriff auf Ihre Dataform-Codebasis besser zu steuern.

  • Die Organisationsrichtlinie gilt für alle Dataform-Repositories innerhalb der Organisation oder des Projekts, für die die Organisationsrichtlinie aktiviert ist. Wenn dies ein Problem ist, sollten Sie weitere Dienste und Produkte in einem anderen Projekt einrichten, für das die Organisationsrichtlinie nicht gilt, und bei Bedarf freigegebene VPC verwenden.

  • Bevor Sie die dataform.restrictGitRemotes-Richtlinie festlegen, informieren Sie sich über die Organisationsrichtlinie und den Administrator in Ihrer Organisation. Für die Verwaltung und Pflege der Richtlinie sind Sie oder ein Administrator mit den entsprechenden Berechtigungen verantwortlich.

Nächste Schritte