Auf dieser Seite wird beschrieben, wie Sie Tags mit Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) verwenden, um den Zugriff auf Ihre Google Cloud-Ressourcen zu steuern.
Weitere Informationen zu Tags – Übersicht.
Übersicht über Tags
Ein Tag ist ein Schlüssel/Wert-Paar, das an eine Google Cloud-Ressource angehängt ist. Sie können IAM-Rollen bedingt gewähren oder IAM-Berechtigungen ablehnen, je nachdem, ob eine Ressource ein bestimmtes Tag hat.
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.
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 undenvironment: prod
zu Ihrer Produktionsumgebung hinzufügen. - Komponententypen: Für die Batchverarbeitung können Sie beispielsweise die Tags
component: frontend
zu Frontend-Ressourcen undcomponent: 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.
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. Sie können diese Definitionen auf Organisations- oder Projektebene erstellen. 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 IDtagValues/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 Kurznamenprod
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 Hauptkonten 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 Hauptkonten 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 Hauptkonten beibehalten möchten, müssen Sie auch Ihre Zulassungsrichtlinien 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 jedes Tag haben, das den Schlüssel tagKeys/987654321098
verwendet:
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 ein beliebiges Tag haben, das den Schlüssel project
verwendet:
resource.matchTag('123456789012/env', 'prod') &&
resource.hasTagKey('123456789012/project')
Nächste Schritte
- Weitere Informationen zum Verwalten von Tags und Hinzufügen von Tags zu Ressourcen
- Tags in einer Bedingung überprüfen