Questa pagina ti guida nella gestione dell'accesso ai bucket di archiviazione all'interno dei progetti di appliance air-gap di Google Distributed Cloud (GDC), in modo che le persone giuste dispongano delle autorizzazioni corrette. Vengono trattati i prerequisiti e i passaggi per ottenere e concedere l'accesso a utenti e account di servizio utilizzando le associazioni di ruoli e i ruoli predefiniti. Queste informazioni ti consentono di controllare in modo efficace l'accesso alle risorse di archiviazione e di mantenere la sicurezza e l'efficienza operativa.
Questa pagina è rivolta a segmenti di pubblico come gli amministratori IT all'interno del gruppo di operatori dell'infrastruttura o gli sviluppatori all'interno del gruppo di operatori dell'applicazione che gestiscono le impostazioni di accesso per i bucket di archiviazione negli ambienti isolati di GDC.
Prima di iniziare
Uno spazio dei nomi del progetto gestisce le risorse bucket nel server API Management. Devi avere un progetto per lavorare con bucket e oggetti.
Concedi l'accesso al bucket
Puoi fornire l'accesso al bucket ad altri utenti o service account creando e applicando RoleBinding con ruoli predefiniti.
Ruoli predefiniti
project-bucket-object-viewer: questo ruolo consente a un utente di elencare tutti i bucket nel progetto, elencare gli oggetti in questi bucket e leggere gli oggetti e i metadati degli oggetti. Questo ruolo non ti consente di eseguire operazioni di scrittura sugli oggetti, come caricamento, sovrascrittura o eliminazione.
project-bucket-object-admin: questo ruolo consente a un utente di elencare tutti i bucket nel progetto ed eseguire operazioni di scrittura e lettura sugli oggetti, ad esempio caricamento, sovrascrittura o eliminazione.
project-bucket-admin::questo ruolo consente agli utenti di gestire tutti i bucket nello spazio dei nomi specificato, nonché tutti gli oggetti in questi bucket.
Per visualizzare un elenco completo delle autorizzazioni concesse per questi ruoli, consulta la sezione Autorizzazioni dei ruoli preimpostati.
Per ottenere le autorizzazioni necessarie per creare associazioni di ruoli del progetto, chiedi all'amministratore IAM del progetto di concederti il ruolo Amministratore IAM del progetto (project-iam-admin
).
Di seguito è riportato un esempio di creazione di un RoleBinding
per concedere l'accesso a un utente e a un account di servizio:
Crea un file YAML sul tuo sistema, ad esempio
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 ```
Applica il file YAML:
kubectl apply \ -f rolebinding-object-admin-all-buckets.yaml
Ottenere le credenziali di accesso al bucket
Quando concedi l'accesso a un bucket, le credenziali di accesso vengono create in un secret.
Il formato del nome del secret è object-storage-key-std-SUBJECT_TYPE-SUBJECT_HASH
.
- I valori per
SUBJECT_TYPE
sono i seguenti:user
: l'utente.sa
: ilServiceAccount
.
SUBJECT_HASH
è l'hash SHA256 con codifica base32 del nome del soggetto.
Ad esempio, l'utente bob@foo.com
ha il secret denominato:
object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdja
Accedere al secret utente
Per un soggetto utente, il secret si trova nello spazio dei nomi object-storage-access-keys
nel server dell'API Management.
Trova il nome del secret:
kubectl auth can-i --list --namespace object-storage-access-keys | grep object-storage-key-std
Riceverai un output simile al seguente:
secrets [] [object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdja,object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdja] [get]
Recupera i contenuti del secret corrispondente per accedere ai bucket:
kubectl get -o yaml --namespace object-storage-access-keys secret object-storage-key-std-user-oy6jdqd6bxfoqcecn2ozv6utepr5bgh355vfku7th5pmejqubdja
Riceverai un output simile al seguente:
data: access-key-id: MEhYM08wWUMySjcyMkVKTFBKRU8= create-time: MjAyMi0wNy0yMiAwMTowODo1OS40MTQyMTE3MDMgKzAwMDAgVVRDIG09KzE5OTAuMzQ3OTE2MTc3 secret-access-key: Ump0MVRleVN4SmhCSVJhbmlnVDAwbTJZc0IvRlJVendqR0JuYVhiVA==
Decodifica l'ID chiave di accesso e il secret:
echo "MEhYM08wWUMySjcyMkVKTFBKRU8=" | base64 -d \ && echo \ && echo "Ump0MVRleVN4SmhCSVJhbmlnVDAwbTJZc0IvRlJVendqR0JuYVhiVA==" | base64 -d
Riceverai un output simile al seguente:
0HX3O0YC2J722EJLPJEO Rjt1TeySxJhBIRanigT00m2YsB/FRUzwjGBnaXbT
Segui la sezione Configura s3cmd con le informazioni risultanti.
Accedi al secret del account di servizio
Per un soggetto service account (SA), il secret viene creato nello stesso spazio dei nomi dell'account di servizio. Per trovare il nome, esegui:
kubectl get --namespace NAMESPACE_NAME secrets -o=jsonpath=
'{.items[?(@.metadata.annotations.object\.gdc\.goog/subject=="SA_NAME")].metadata.name}'
Riceverai un output simile al seguente:
object-storage-key-std-sa-mng3olp3vsynhswzasowzu3jgzct2ert72pjp6wsbzqhdwckwzbq
Puoi fare riferimento al secret nel pod come variabili di ambiente (https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-environment-variables) o file (https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod).
Autorizzazioni dei ruoli preimpostate
Quando lavori con l'archiviazione di oggetti, potresti dover richiedere i seguenti ruoli.
Autorizzazioni project-bucket-object-viewer
Questo ruolo concede le autorizzazioni per ottenere ed elencare gli oggetti e i relativi metadati nel bucket.
Il ruolo project-bucket-object-viewer
dispone delle seguenti autorizzazioni:
Autorizzazioni API bucket:
- Ottieni
- Elenco
- Guarda
Autorizzazioni di archiviazione degli oggetti S3:
GetObject
GetObjectAcl
GetObjectVersion
ListBucket
ListBucketVersions
ListBucketMultipartUploads
ListMultipartUploadParts
project-bucket-object-admin permissions
Questo ruolo concede le autorizzazioni per inserire ed eliminare oggetti, versioni degli oggetti e tag nel bucket. Inoltre, concede anche tutte le autorizzazioni in
project-bucket-object-viewer
.
Il ruolo project-bucket-object-admin
dispone delle seguenti autorizzazioni di archiviazione
di oggetti:
Autorizzazioni di archiviazione degli oggetti S3:
AbortMultipartUpload
DeleteObject
PutObject
autorizzazioni di amministratore del bucket del progetto
Questo ruolo concede le autorizzazioni per creare, aggiornare o eliminare risorse Bucket
nello spazio dei nomi del progetto. Inoltre, concede anche tutte le autorizzazioni in
project-bucket-object-admin
.
Il ruolo project-bucket-object-admin
dispone delle seguenti autorizzazioni:
Autorizzazioni API bucket:
- Crea
- Aggiornamento
- Elimina