Auf dieser Seite erfahren Sie, wie Sie den Zugriff auf Speicher-Buckets in Google Distributed Cloud-Projekten (GDC) für Air-Gap-Appliances verwalten, damit die richtigen Personen die richtigen Berechtigungen haben. Darin werden die Voraussetzungen und Schritte zum Abrufen und Gewähren von Nutzer- und Dienstkonto-Zugriff 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 Nutzer wie IT-Administratoren in der Gruppe der Infrastrukturbetreiber oder Entwickler in der Gruppe der Anwendungsbetreiber, die die Zugriffseinstellungen für Speicher-Buckets in GDC-Umgebungen ohne Internetverbindung verwalten.
Hinweise
In einem Projektnamespace werden Bucket-Ressourcen auf dem Management API-Server verwaltet. Sie benötigen ein Projekt, um mit Buckets und Objekten zu arbeiten.
Bucket-Zugriff gewähren
Sie können anderen Nutzern oder Dienstkonten Bucket-Zugriff gewähren, indem Sie RoleBindings mit vordefinierten Rollen erstellen und anwenden.
Vordefinierte Rollen
project-bucket-object-viewer::Mit dieser Rolle kann ein Nutzer alle Buckets im Projekt auflisten, Objekte in diesen Buckets auflisten sowie Objekte und Objektmetadaten lesen. Mit dieser Rolle können Sie keine Schreibvorgänge für Objekte ausführen, z. B. Hochladen, Überschreiben oder Löschen.
project-bucket-object-admin::Mit dieser Rolle kann ein Nutzer alle Buckets im Projekt auflisten sowie Schreib- und Lesevorgänge für Objekte ausführen, z. B. Hochladen, Überschreiben oder Löschen.
project-bucket-admin::Mit dieser Rolle können Nutzer alle Buckets im angegebenen Namespace sowie alle Objekte in diesen Buckets verwalten.
Eine vollständige Liste der für diese Rollen gewährten Berechtigungen finden Sie im Abschnitt Berechtigungen für voreingestellte Rollen.
Bitten Sie Ihren Projekt-IAM-Administrator, Ihnen die Rolle „Projekt-IAM-Administrator“ (project-iam-admin
) zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Erstellen von Projektrollenbindungen benötigen.
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
.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 # Could be bob or bob@example.com based on your organization settings. apiGroup: rbac.authorization.k8s.io ```
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 für den Zugriff in einem Secret erstellt.
Das Format des Secret-Namens ist object-storage-key-std-SUBJECT_TYPE-SUBJECT_HASH
.
- Für
SUBJECT_TYPE
sind folgende Werte möglich:user
: der Nutzer.sa
: dieServiceAccount
.
SUBJECT_HASH
ist der base32-codierte SHA256-Hash des Betreffnamens.
Beispiel: Der Nutzer bob@foo.com
hat das Secret mit dem Namen:
object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdja
Nutzer-Secret aufrufen
Bei einem Nutzer-Subjekt befindet sich das Secret im Namespace object-storage-access-keys
auf dem Management API-Server.
Suchen Sie den Secret-Namen:
kubectl auth can-i --list --namespace object-storage-access-keys | grep object-storage-key-std
Die Ausgabe sollte in etwa so aussehen:
secrets [] [object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdja,object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdja] [get]
Rufen Sie den Inhalt des entsprechenden Secrets ab, um auf Buckets zuzugreifen:
kubectl get -o yaml --namespace object-storage-access-keys secret object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdja
Die 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 -d
Die Ausgabe sollte in etwa so aussehen:
0HX3O0YC2J722EJLPJEO Rjt1TeySxJhBIRanigT00m2YsB/FRUzwjGBnaXbT
Folgen Sie dem Abschnitt s3cmd konfigurieren mit den resultierenden Informationen.
Auf das Dienstkonto-Secret zugreifen
Bei einem Dienstkonto-Subjekt (SA) wird das Secret im selben Namespace wie das Dienstkonto erstellt. Führen Sie Folgendes aus, um den Namen zu ermitteln:
kubectl get --namespace NAMESPACE_NAME secrets -o=jsonpath=
'{.items[?(@.metadata.annotations.object\.gdc\.goog/subject=="SA_NAME")].metadata.name}'
Die Ausgabe sollte in etwa so aussehen:
object-storage-key-std-sa-mng3olp3vsynhswzasowzu3jgzct2ert72pjp6wsbzqhdwckwzbq
Sie können im Pod als Umgebungsvariablen (https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables) oder Dateien (https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod) auf das Secret verweisen.
Voreingestellte Rollenberechtigungen
Wenn Sie mit Objektspeicher arbeiten, müssen Sie möglicherweise die folgenden Rollen anfordern.
Berechtigungen für „Projekt-Bucket-Objekt-Betrachter“
Diese Rolle gewährt Berechtigungen zum Abrufen und Auflisten von Objekten und Objektmetadaten im Bucket.
Die Rolle project-bucket-object-viewer
hat die folgenden Berechtigungen:
Bucket-API-Berechtigungen:
- Get
- Liste
- Ansehen
Berechtigungen für S3-Objektspeicher:
GetObject
GetObjectAcl
GetObjectVersion
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.
Die Rolle project-bucket-object-admin
hat die folgenden Berechtigungen für den Objektspeicher:
Berechtigungen für S3-Objektspeicher:
AbortMultipartUpload
DeleteObject
PutObject
Berechtigungen als Projekt-Bucket-Administrator
Mit dieser Rolle werden Berechtigungen zum Erstellen, Aktualisieren oder Löschen von Bucket
-Ressourcen im Projekt-Namespace erteilt. Außerdem werden alle Berechtigungen in project-bucket-object-admin
gewährt.
Die Rolle project-bucket-object-admin
hat die folgenden Berechtigungen:
Bucket-API-Berechtigungen:
- Erstellen
- Aktualisieren
- Delete