• Non ci sono risultati.

Gestione dell'accesso a Object Gateway

Suggerimento: utilizzo di nomi di compartimenti conformi a DNS

11.5 Gestione dell'accesso a Object Gateway

È possibile comunicare con Object Gateway mediante l'interfaccia compatibile con S3 o Swift.

L'interfaccia S3 è compatibile con un grande sottoinsieme dell'API Amazon S3 RESTful. L'inter-faccia Swift è compatibile con un grande sottoinsieme dell'API OpenStack Swift.

Per entrambe le interfacce è richiesto di creare un utente specifico e installare il software client pertinente per comunicare con il gateway che utilizza la chiave segreta dell'utente.

11.5.1 Accesso a Object Gateway

11.5.1.1 Accesso all'interfaccia S3

Per accedere all'interfaccia S3, è necessario un client REST. S3cmd è un client S3 della riga di comando. È possibile trovarlo in openSUSE Build Service (OBS) (https://build.opensuse.org/packa-ge/show/Cloud:Tools/s3cmd) (in lingua inglese). L'archivio contiene versioni di entrambe le distribuzioni basate su SUSE Linux Enterprise e openSUSE.

Se si desidera testare l'accesso all'interfaccia S3, è anche possibile scrivere un piccolo script Py-thon, che consentirà di eseguire la connessione a Object Gateway, creare un nuovo comparti-mento ed elencare tutti i compartimenti. I valori per aws_access_key_id e aws_secret_ac-cess_key sono ricavati dai valori di access_key e secret_key restituiti dal comando rado-sgw_admin di cui alla Sezione 11.5.2.1, «Aggiunta di utenti S3 e Swift».

1. Installare il pacchetto python-boto:

sudo zypper in python-boto

2. Creare un nuovo script Python denominato s3test.py con il seguente contenuto:

import boto

137 Note aggiuntive SES 5

import boto.s3.connection

created = bucket.creation_date, )

Sostituire {hostname} con il nome host dell'host in cui si è configurato il servizio Object Gateway, ad esempio gateway_host.

3. Eseguire lo script:

python s3test.py

L'output dello script è simile a quanto riportato di seguito:

my-new-bucket 2015-07-22T15:37:42.000Z

11.5.1.2 Accesso all'interfaccia Swift

Per accedere a Object Gateway tramite l'interfaccia Swift, è necessario il client della riga di co-mando swift. Nella relativa documentazione man 1 swift sono fornite ulteriori informazioni sulle rispettive opzioni della riga di comando.

Il pacchetto è incluso nel modulo "Public Cloud" per SUSE Linux Enterprise 12 SP3. Prima di installare il pacchetto, è necessario attivare il modulo e aggiornare l'archivio software:

sudo SUSEConnect -p sle-module-public-cloud/12/x86_64 sudo zypper refresh

Per installare il comando swift, eseguire quanto riportato di seguito:

sudo zypper in python-swiftclient

138 Accesso a Object Gateway SES 5

Per l'accesso swift si utilizza la seguente sintassi:

swift -A http://IP_ADDRESS/auth/1.0 \

-U example_user:swift -K 'swift_secret_key' list

Sostituire IP_ADDRESS con l'indirizzo IP del server gateway e swift_secret_key con il rispet-tivo valore risultante dal comando radosgw-admin key create eseguito per l'utente swift in Sezione 11.5.2.1, «Aggiunta di utenti S3 e Swift».

Ad esempio:

swift -A http://gateway.example.com/auth/1.0 -U example_user:swift \ -K 'r5wWIxjOCeEO7DixD1FjTLmNYIViaC6JVhi3013h' list

L'output è:

my-new-bucket

11.5.2 Gestione degli account S3 e Swift

11.5.2.1 Aggiunta di utenti S3 e Swift

Per abilitare gli utenti finali all'iterazione con il gateway, è necessario creare un utente, una chiave di accesso e un segreto. Esistono due tipi di utenti: un utente e un sottoutente. Mentre gli utenti vengono utilizzati per l'iterazione con l'interfaccia S3, i sottoutenti sono gli utenti dell'in-terfaccia Swift. Ciascun sottoutente è associato a un utente.

È anche possibile aggiungere gli utenti tramite il file DeepSea rgw.sls. Per un esempio, vedere Sezione 14.3.1, «Utenti Object Gateway diversi per NFS Ganesha».

Per creare un utente Swift, seguire la procedura indicata:

1. Per creare un utente Swift, che nella nostra terminologia è denominato sottoutente, prima è necessario creare l'utente associato.

sudo radosgw-admin user create --uid=username \ --display-name="display-name" --email=email

Ad esempio:

sudo radosgw-admin user create \ --uid=example_user \

--display-name="Example User" \

139 Gestione degli account S3 e Swift SES 5

--email=penguin@example.com

2. Per creare un sottoutente (interfaccia Swift) per l'utente, è necessario specificare l'ID utente (--uid=username), un ID sottoutente e il livello di accesso per il sottoutente.

sudo radosgw-admin subuser create --uid=uid \ --subuser=uid \

--access=[ read | write | readwrite | full ]

Ad esempio:

sudo radosgw-admin subuser create --uid=example_user \ --subuser=example_user:swift --access=full

3. Generare una chiave segreta per l'utente.

sudo radosgw-admin key create \ --gen-secret \

--subuser=example_user:swift \ --key-type=swift

4. L'output di entrambi i comandi saranno i dati formattati per JSON in cui è visualizzato lo stato dell'utente. Osservare le righe seguenti e ricordare il valore di secret_key:

"swift_keys": [

{ "user": "example_user:swift",

"secret_key": "r5wWIxjOCeEO7DixD1FjTLmNYIViaC6JVhi3013h"}],

Quando si accede a Object Gateway tramite l'interfaccia S3, è necessario creare un utente S3 eseguendo:

sudo radosgw-admin user create --uid=username \ --display-name="display-name" --email=email

Ad esempio:

sudo radosgw-admin user create \ --uid=example_user \

--display-name="Example User" \ --email=penguin@example.com

Con questo comando si creano anche la chiave di accesso e la chiave segreta dell'utente. Verifi-care l'output per le parole chiave access_key e secret_key e i rispettivi valori:

[...]

"keys": [

140 Gestione degli account S3 e Swift SES 5

{ "user": "example_user",

"access_key": "11BS02LGFB6AL6H1ADMW",

"secret_key": "vzCEkuryfn060dfee4fgQPqFrncKEIkh3ZcdOANY"}], [...]

11.5.2.2 Rimozione di utenti S3 e Swift

La procedura di eliminazione degli utenti S3 e Swift è simile. Nel caso degli utenti Swift però potrebbe essere necessario eliminare l'utente e i rispettivi sottoutenti.

Per rimuovere un utente S3 o Swift (inclusi tutti i rispettivi sottoutenti), specificare user rm e l'ID utente nel seguente comando:

sudo radosgw-admin user rm --uid=example_user

Per rimuovere un sottoutente, specificare subuser rm e l'ID sottoutente.

sudo radosgw-admin subuser rm --uid=example_user:swift

È possibile utilizzare una delle seguenti opzioni:

--purge-data

Elimina definitivamente tutti i dati associato all'ID utente.

--purge-keys

Elimina definitivamente tutte le chiavi associate all'ID utente.