Auf dieser Seite erfahren Sie, wie Sie den Zugriff auf Speicher-Buckets in Google Distributed Cloud (GDC)-Projekten mit Air Gap verwalten, damit die richtigen Personen die richtigen Berechtigungen haben. Darin werden die Voraussetzungen und Schritte zum Abrufen und Gewähren des Zugriffs für Nutzer und Dienstkonten mithilfe von Rollenbindungen und vordefinierten Rollen beschrieben. Mit diesen Informationen können Sie den Zugriff auf Ihre Speicherressourcen effektiv steuern und sowohl die Sicherheit als auch die betriebliche Effizienz aufrechterhalten.
Diese Seite richtet sich an Zielgruppen wie IT-Administratoren in der Gruppe der Infrastrukturbetreiber oder Entwickler in der Gruppe der Anwendungsoperatoren, die die Zugriffseinstellungen für Speicher-Buckets in GDC-Umgebungen ohne Internetverbindung verwalten. Weitere Informationen finden Sie unter Dokumentation zu Zielgruppen für GDC mit Air Gap.
Hinweise
In einem Projektnamespace werden Bucket-Ressourcen auf dem Management API-Server verwaltet. Sie benötigen ein Projekt, um mit Buckets und Objekten arbeiten zu können.
Bucket-Zugriff gewähren
Sie können anderen Nutzern oder Dienstkonten Bucket-Zugriff gewähren, indem Sie RoleBindings mit vordefinierten Rollen auf dem Management API-Server erstellen und anwenden.
Vordefinierte Rollen
project-bucket-object-viewer::Mit dieser Rolle kann ein Nutzer alle Buckets im Projekt und Objekte in diesen Buckets auflisten sowie Objekte und Objektmetadaten lesen. Damit können Sie keine Schreibvorgänge für Objekte ausführen. Beispiele: Hochladen, Überschreiben, Löschen. Hat Lesezugriff auf Buckets mit zwei Zonen in der Organisation und ihren Projekten sowie Lesezugriff auf die Objekte in diesen Buckets.
project-bucket-object-admin::Mit dieser Rolle kann ein Nutzer alle Buckets im Projekt auflisten sowie Lese- und Schreibvorgänge für Objekte ausführen. Beispiele: Hochladen, Überschreiben, Löschen. Hat Lesezugriff auf Buckets mit zwei Zonen in der Organisation und ihren Projekten sowie Lese-/Schreibzugriff auf die Objekte in diesen Buckets.
project-bucket-admin::Damit können Nutzer alle Buckets im angegebenen Namespace sowie alle Objekte in diesen Buckets verwalten. Hat Lesezugriff auf Buckets mit zwei Zonen in der Organisation und ihren Projekten sowie Lese-/Schreibzugriff auf die Objekte in diesen Buckets.
Eine vollständige Liste der Berechtigungen, die für die oben genannten Rollen gewährt werden, finden Sie im Abschnitt Voreingestellte Rollenberechtigungen.
Bitten Sie Ihren Projekt-IAM-Administrator, Ihnen Berechtigungen zum Erstellen von RoleBindings zu gewähren. Das folgende Beispiel zeigt, wie Sie eine RoleBinding erstellen, um einem Nutzer und einem Dienstkonto Zugriff zu gewähren:
Erstellen Sie auf Ihrem System eine YAML-Datei, z. B.
rolebinding-object-admin-all-buckets.yaml.# Example file name: # rolebinding-object-admin-all-buckets.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: namespace: NAMESPACE_NAME name: readwrite-all-buckets roleRef: kind: Role name: project-bucket-object-admin apiGroup: rbac.authorization.k8s.io subjects: - kind: ServiceAccount namespace: NAMESPACE_NAME name: SA_NAME - kind: User namespace: NAMESPACE_NAME name: bob@example.com apiGroup: rbac.authorization.k8s.io # Could be bob or bob@example.com based on your organization settings.Wenden Sie die YAML-Datei an:
kubectl apply \ -f rolebinding-object-admin-all-buckets.yaml
Anmeldedaten für den Bucket-Zugriff abrufen
Wenn Sie Zugriff auf einen Bucket gewähren, werden die Anmeldedaten in einem Secret erstellt.
Das Format des Secret-Namens ist object-storage-key-STORAGE_CLASS-SUBJECT_TYPE-SUBJECT_HASH.
- Mögliche Werte für
STORAGE_CLASS:stdfür die SpeicherklasseStandard.
- Mögliche Werte für
SUBJECT_TYPE:userfür Nutzer.safür ServiceAccount.
SUBJECT_HASHist der base32-codierte SHA256-Hash des Betreffnamens.
Beispiel: Der Nutzer bob@foo.com hat ein Secret mit dem Namen:
object-storage-key-std-user-l74gbpyrsbmwy4mivocr3nur6dzrnhcfhe3otyplul42i732aama
Nutzeranmeldedaten abrufen
Für ein Nutzer-Subjekt befindet sich das Secret im Namespace object-storage-access-keys auf dem Management API-Server.
Führen Sie den folgenden Befehl aus, um die Secret-Ressourcen aufzulisten, die Sie im Namespace
object-storage-access-keysansehen dürfen:kubectl auth can-i --list --namespace object-storage-access-keys | grep "object-storage-key-"Wenn Sie Secrets in diesem Namespace aufrufen können, sehen Sie eine Ausgabe, die einen oder mehrere Secret-Namen enthält, die mit
object-storage-key-beginnen, ähnlich wie im folgenden Beispiel:secrets [] [object-storage-key-std-user-l74gbpyrsbmwy4mivocr3nur6dzrnhcfhe3otyplul42i732aama] [get]HINWEIS: Wenn Sie ein Administrator mit der Berechtigung zum Aufrufen aller Secret-Ressourcen oder zum Annehmen der Identität anderer Nutzer sind, können Sie einen der folgenden Befehle ausführen, um den Namen von Secrets für einen bestimmten Nutzer zu ermitteln:
Alle Secrets eines bestimmten Nutzers auflisten:
export USER_NAME=bob@example.com kubectl get secrets --namespace object-storage-access-keys -o json | jq -r --arg USER_NAME "${USER_NAME:?}" '.items[] | select( (.metadata.annotations."object.gdc.goog/subject"==$USER_NAME)) | .metadata.name'So können Sie sich als Nutzer ausgeben, um zu sehen, welche Secrets er aufrufen kann:
export USER_NAME=bob@example.com kubectl auth can-i --list --namespace object-storage-access-keys --as "${USER_NAME:?} | grep "object-storage-key-"
Rufen Sie den Inhalt des entsprechenden Secrets ab:
kubectl get -o yaml --namespace object-storage-access-keys secret object-storage-key-std-user-l74gbpyrsbmwy4mivocr3nur6dzrnhcfhe3otyplul42i732aamaDie Ausgabe sollte in etwa so aussehen:
data: access-key-id: MEhYM08wWUMySjcyMkVKTFBKRU8= create-time: MjAyMi0wNy0yMiAwMTowODo1OS40MTQyMTE3MDMgKzAwMDAgVVRDIG09KzE5OTAuMzQ3OTE2MTc3 secret-access-key: Ump0MVRleVN4SmhCSVJhbmlnVDAwbTJZc0IvRlJVendqR0JuYVhiVA==Zugriffsschlüssel-ID und ‑geheimnis entschlüsseln:
echo "MEhYM08wWUMySjcyMkVKTFBKRU8=" | base64 -d \ && echo \ && echo "Ump0MVRleVN4SmhCSVJhbmlnVDAwbTJZc0IvRlJVendqR0JuYVhiVA==" | base64 -dDie Ausgabe sollte in etwa so aussehen:
0HX3O0YC2J722EJLPJEO Rjt1TeySxJhBIRanigT00m2YsB/FRUzwjGBnaXbTFolgen Sie dem Abschnitt gcloud CLI konfigurieren mit den resultierenden Informationen.
Zugriff auf Dienstkonto erhalten
Bei einem Dienstkonto-Subjekt wird das Secret im selben Namespace wie das Dienstkonto erstellt.
Führen Sie den folgenden Befehl aus, um zu prüfen, ob Sie Secret-Ressourcen im Namespace abrufen und auflisten können. Wenden Sie sich an Ihren Administrator, wenn dies nicht der Fall ist:
export SA_NAMESPACE=NAMESPACE_NAME
kubectl auth can-i --list --namespace $SA_NAMESPACE
Führen Sie Folgendes aus, um den Namen des Secrets zu ermitteln:
export SA_NAME=SA_NAME
kubectl get secrets --namespace $SA_NAMESPACE -o json | jq -r --arg USER_NAME "${SA_NAME:?}" '.items[] | select( (.metadata.annotations."object.gdc.goog/subject"==$USER_NAME)) | .metadata.name'
Die Ausgabe sollte in etwa so aussehen:
object-storage-key-std-sa-mng3olp3vsynhswzasowzu3jgzct2ert72pjp6wsbzqhdwckwzbq
Sie können im Pod als Umgebungsvariablen oder Dateien auf das Secret verweisen.
Voreingestellte Rollenberechtigungen
Vordefinierte Rollen sind auch auf dem globalen API-Server für den administrativen und operativen Zugriff auf Dual-Zone-Buckets verfügbar.
Berechtigungen für „Projekt-Bucket-Objekt-Betrachter“
Diese Rolle gewährt Berechtigungen zum Abrufen und Auflisten von Objekten und Objektmetadaten im Bucket.
Die folgenden Berechtigungen für die Objektspeicherung werden durch das Verb „project-bucket-object-viewer“ gewährt:
Bucket-API-Berechtigungen:
- get
- list
- Ansehen
Berechtigungen für S3-Objektspeicher:
- GetBucketVersioning
- GetObject
- GetObjectAcl
- GetObjectLegalHold
- GetObjectRetention
- GetObjectTagging
- GetObjectVersion
- GetObjectVersionTagging
- ListBucket
- ListBucketVersions
- ListBucketMultipartUploads
- ListMultipartUploadParts
Berechtigungen für „Projekt-Bucket-Objekt-Administrator“
Diese Rolle gewährt Berechtigungen zum Einfügen und Löschen von Objekten, Objektversionen und Tags im Bucket. Außerdem werden damit alle Berechtigungen in der project-bucket-object-viewer gewährt.
Eine Liste aller zusätzlichen Berechtigungen für den Objektspeicher, die durch die Rolle gewährt werden, ist unten aufgeführt:
Berechtigungen für S3-Objektspeicher:
- AbortMultipartUpload
- DeleteObject
- DeleteObjectTagging
- DeleteObjectVersion
- DeleteObjectVersionTagging
- PutObject
- PutObjectTagging
- PutObjectVersionTagging
- PutOverwriteObject
- RestoreObject
Berechtigungen als Projekt-Bucket-Administrator
Mit dieser Rolle werden Berechtigungen zum Erstellen, Aktualisieren oder Löschen von Bucket-Ressourcen im Projekt-Namespace gewährt. Außerdem werden alle Berechtigungen in project-bucket-object-admin gewährt.
Die Rolle gewährt die folgenden zusätzlichen Berechtigungen:
Bucket-API-Berechtigungen:
- Erstellen
- Aktualisieren
- Delete