Tags und Zugriffssteuerung

Diese Seite bietet eine Übersicht über Tags. Außerdem wird erläutert, wie Sie Tags mit Identity and Access Management (IAM) verwenden, um den Zugriff auf Google Cloud-Ressourcen zu steuern.

Übersicht über Tags

Ein Tag ist ein Schlüssel/Wert-Paar, das mit einer Organisation, einem Ordner oder einem Projekt verknüpft ist. Sie können IAM-Rollen bedingte Bedingungen zuweisen, je nachdem, ob eine Ressource ein bestimmtes Tag enthält.

Andere Ressourcen übernehmen Tag-Werte von ihrer übergeordneten Organisation, ihren Ordnern und ihrem Projekt. Mit Tags können Sie den Zugriff auf jede Google Cloud-Ressource verwalten.

Häufige Verwendungen von Tags

Im Folgenden sind einige gängige Anwendungsfälle für die Verwaltung des Zugriffs mit Tags aufgeführt:

  • Entwicklungs-, Staging- und Produktionsumgebungen. Sie können beispielsweise die Tags environment: dev zu Ihrer Entwicklungsumgebung und environment: prod zu Ihrer Produktionsumgebung hinzufügen.
  • Komponententypen: Für die Batchverarbeitung können Sie beispielsweise die Tags component: frontend zu Front-End-Ressourcen und component: batch für Ressourcen zur Batchverarbeitung hinzufügen.
  • Projektnamen: Wenn Ihr Team beispielsweise an einem Projekt mit dem Codenamen Atlas arbeitet, können Sie den Entwicklungsressourcen des Teams das Tag project: atlas hinzufügen.

Tags und die Ressourcenhierarchie

In Google Cloud sind Ressourcen Teil einer Hierarchie und Ressourcen auf niedrigerer Ebene können Attribute von übergeordneten Ressourcen übernehmen. Tags sind eines der Attribute, die Ressourcen übernehmen können. Wenn Sie beispielsweise ein Tag an eine Organisation anhängen, übernehmen die Ordner, Projekte und dienstspezifischen Ressourcen in dieser Organisation dieses Tag.

Um zu verhindern, dass Ressourcen einen Tag-Wert übernehmen, hängen Sie ein anderes Tag an einen Ordner oder ein Projekt an. Dabei verwenden Sie denselben Schlüssel, aber einen anderen Wert als das Tag für die übergeordnete Organisation oder den übergeordneten Ordner. Tatsächlich hat jedes Tag in einer Organisation oder einem Ordner einen Standardwert und jedes Tag in einer untergeordneten Ressource, z. B. einem Ordner oder Projekt, überschreibt den Standardwert.

Angenommen, Sie wenden das Tag environment: dev auf einen Ordner an und der Ordner hat zwei untergeordnete Ordner mit den Namen team-a und team-b. Sie können auch ein anderes Tag (environment: test) auf den Ordner team-b anwenden. Projekte und andere Ressourcen im Ordner team-a übernehmen das Tag environment: dev; Projekte und andere Ressourcen im Ordner team-b übernehmen das Tag environment: test:

Wenn Sie das Tag environment: test aus dem Ordner team-b entfernen, übernehmen dieser Ordner und seine Ressourcen das Tag environment: dev.

Tag-Definitionen und Kennungen

Bevor Sie Tags an Ressourcen anhängen, müssen Sie den Schlüssel für das Tag sowie die vom Tag zulässigen Werte definieren. Diese Definitionen sind an Ihre Organisation gebunden. Tagdefinitionen werden mit dem Resource Manager verwaltet. Weitere Informationen finden Sie unter Neues Tag erstellen und definieren.

Jeder Tag-Schlüssel und -Wert hat verschiedene IDs:

  • Eine permanente ID, die global eindeutig ist und nicht wiederverwendet werden kann. Ein Tag-Schlüssel könnte beispielsweise die permanente ID tagKeys/123456789012 und ein Tag-Wert die permanente ID tagValues/567890123456 haben.
  • Kurzname: Der Kurzname für jeden Schlüssel muss innerhalb Ihrer Organisation eindeutig sein. Der Kurzname für jeden Wert muss für den zugehörigen Schlüssel eindeutig sein. Ein Tag-Schlüssel könnte beispielsweise den Kurznamen env und ein Tag-Wert den Kurznamen prod haben.
  • Ein Namespace-Name, mit dem die numerische ID Ihrer Organisation dem Kurznamen eines Tag-Schlüssels hinzugefügt wird. Ein Tag-Schlüssel könnte beispielsweise den Namespace-Namen 123456789012/env haben. Hier erfahren Sie, wie Sie Ihre Organisations-ID abrufen.

Wie auf dieser Seite beschrieben, können Sie Bedingungen erstellen, um Zugriff auf Tags zu gewähren, nachdem Sie Tags an eine Ressource angehängt haben. Um eine Bedingung zu schreiben, müssen Sie auswählen, welcher Kennungstyp in der Bedingung verwendet werden soll. Die folgenden Richtlinien helfen Ihnen bei der Auswahl:

  • Zum Testen von Tags empfehlen wir, den Namespace mit Namen (für Schlüssel) und den Kurznamen (für Werte) zu verwenden. Diese Kennungen sind einfacher zu verstehen und zu merken, vor allem, wenn Sie beginnen.
  • Wenn Sie Ihre Konfiguration deklarativ verwalten, sollten Sie mit einem Tool wie Terraform in etwa den Namespace-Namen (für Schlüssel) und den Kurznamen (für Werte) verwenden. Sie können diese Kennungen im Laufe der Zeit wiederverwenden. Das bedeutet, dass ein deklaratives Tool sie löschen und neu erstellen kann und Ihre Bedingungen weiterhin funktionieren.

    Dieser Ansatz hat einen Kompromiss: Angenommen, Sie löschen einen Tag-Schlüssel oder -Wert und erstellen dann einen neuen Schlüssel oder Wert mit demselben Namen, aber in einer anderen Bedeutung. Wenn die Bedingung auf den Namespace- oder Kurznamen verweist, gilt die Bedingung weiterhin für den neuen Schlüssel oder Wert.

    In einigen Fällen kann dieses Verhalten dazu führen, dass Mitglieder Zugriff erhalten, was Sie nicht beabsichtigt hatten.

  • Zur Reduzierung des Risikos sollten Sie dauerhafte IDs verwenden, die nie wiederverwendet werden können.

    Grund dafür, dass permanente IDs Risiko minimieren: Angenommen, Sie löschen einen Tag-Schlüssel oder -Wert und erstellen dann einen neuen Schlüssel oder Wert mit demselben Namen, aber in einer anderen Bedeutung. Wenn die Bedingung auf die permanente ID verweist, gilt die Bedingung nicht für den neuen Schlüssel oder Wert. Dies führt dazu, dass Mitglieder weniger Zugriff erhalten, was sie eigentlich nicht beabsichtigt hatten.

    Ein Nachteil: Wenn Sie Schlüssel und Werte löschen und neu erstellen und den Zugriff von Mitgliedern beibehalten möchten, müssen Sie auch Ihre IAM-Richtlinien aktualisieren, damit sie auf die neuen permanenten IDs verweisen.

Zugriff auf getaggte Ressourcen

Mithilfe von Tags mit IAM-Bedingungen können Sie eine Rolle bedingt gewähren, je nachdem, welche Tags von einer Ressource angehängt oder übernommen werden. Wenn eine Bedingung den Wert true ergibt, wird der Zugriff gewährt. Andernfalls wird kein Zugriff gewährt. Weitere Informationen finden Sie in der Übersicht über IAM-Bedingungen.

In den folgenden Abschnitten werden Beispiele von Bedingungsausdrücken gezeigt, mit denen die Tags für eine Ressource überprüft werden. Die Bedingung ruft unterschiedliche Funktionen auf, je nachdem, ob die permanente ID oder der Kurzname geprüft wird. Weitere Informationen zu diesen Funktionen finden Sie unter Ressourcen-Tags.

Bedingungen mit permanenten IDs

Diese Bedingung gewährt eine Rolle für Ressourcen mit dem Tag tagKeys/123456789012: tagValues/567890123456:

resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456')

Diese Bedingung gewährt eine Rolle für Ressourcen, die ein beliebiges Tag mit dem Schlüssel tagKeys/123456789012 haben, unabhängig vom Wert:

resource.hasTagKeyId('tagKeys/123456789012')

Diese Bedingung gewährt eine Rolle für Ressourcen, die sowohl das Tag tagKeys/123456789012: tagValues/567890123456 als auch alle Tags haben, die den Schlüssel tagKeys/987654321098 verwenden:

resource.matchTagId('tagKeys/123456789012', 'tagValues/567890123456') &&
    resource.hasTagKeyId('tagKeys/987654321098')

Bedingungen mit Namespace-Namen und Kurznamen

Diese Bedingung gewährt eine Rolle für Ressourcen mit dem Tag env: prod, was darauf hinweist, dass sich die Ressource in einer Produktionsumgebung befindet:

resource.matchTag('123456789012/env', 'prod')

Diese Bedingung gewährt eine Rolle für Ressourcen, die ein beliebiges Tag mit dem Schlüssel env haben, unabhängig vom Wert:

resource.hasTagKey('123456789012/env')

Diese Bedingung gewährt eine Rolle für Ressourcen, die sowohl das Tag env: prod als auch jedes Tag mit dem Schlüssel project haben:

resource.matchTag('123456789012/env', 'prod') &&
    resource.hasTagKey('123456789012/project')

Nächste Schritte