Credenziali del servizio
Una credenziale di servizio fornisce le informazioni necessarie per connettere un'applicazione a Object Storage, confezionate in un documento JSON.
Le credenziali del servizio sono sempre associate ad un ID servizio e dei nuovi ID servizio possono essere creati insieme ad una nuova credenziale.
Per visualizzare una credenziale, è necessario disporre del ruolo della piattaforma Amministratore o di un ruolo personalizzato con l'azione resource-controller.credential.retrieve_all. Per ulteriori informazioni su questo aggiornamento,
consultare la documentazione.
Utilizza la seguente procedura per creare una credenziale del servizio:
- Accedi alla console IBM Cloud e vai alla tua istanza di Object Storage.
- Nella navigazione laterale, fai clic su Credenziali del servizio.
- Fai clic su Nuova credenziale e fornisci le informazioni necessarie. Se si desidera generare le credenziali HMAC, passare da
Include HMAC CredentialaOn. Verificare che l'opzione sia passata aOnprima di continuare. - Fai clic su Aggiungi per generare la credenziale del servizio.
Quando si crea una credenziale del servizio, è possibile fornire un valore di None per il ruolo. Ciò impedirà la creazione di politiche di accesso IAM indesiderate o non necessarie. Tutte le politiche di accesso per l'ID servizio
associato dovranno essere gestite utilizzando la console IAM o le API.
La credenziale ha i seguenti valori:
| Nome campo | Valore |
|---|---|
apikey |
Nuova chiave API creata per l'ID servizio |
cos_hmac_keys |
Coppia chiave di accesso e chiave segreta per l'utilizzo con librerie e strumenti compatibili con S3 |
endpoints |
Collegamento alla rappresentazione JSON di endpoint disponibili |
iam_apikey_description |
Descrizione della chiave API - generata inizialmente ma modificabile |
iam_apikey_name |
Nome chiave API - generato inizialmente ma modificabile |
iam_role_crn |
Identificativo univoco per il ruolo assegnato |
iam_serviceid_crn |
Identificativo univoco per l'ID servizio |
resource_instance_id |
Identificativo univoco per l'istanza di Object Storage a cui accede la credenziale. Questo viene indicato anche come credenziale del servizio. |
Questo è un esempio di credenziale del servizio:
{
"apikey": "0viPHOY7LbLNa9eLftrtHPpTjoGv6hbLD1QalRXikliJ",
"cos_hmac_keys": {
"access_key_id": "347aa3a4b34344f8bc7c7cccdf856e4c",
"secret_access_key": "gvurfb82712ad14W7a7915h763a6i87155d30a1234364f61"
},
"endpoints": "https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints",
"iam_apikey_description": "Auto generated apikey during resource-key operation for Instance - crn:v1:bluemix:public:cloud-object-storage:global:a/3ag0e9402tyfd5d29761c3e97696b71n:d6f74k03-6k4f-4a82-b165-697354o63903::",
"iam_apikey_name": "auto-generated-apikey-f9274b63-ef0b-4b4e-a00b-b3bf9023f9dd",
"iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Manager",
"iam_serviceid_crn": "crn:v1:bluemix:public:iam-identity::a/3ag0e9402tyfd5d29761c3e97696b71n::serviceid:ServiceId-540a4a41-7322-4fdd-a9e7-e0cb7ab760f9",
"resource_instance_id": "crn:v1:bluemix:public:cloud-object-storage:global:a/3ag0e9402tyfd5d29761c3e97696b71n:d6f74k03-6k4f-4a82-b165-697354o63903::"
}
Puoi anche utilizzare la CLI IBM Cloud per creare una nuova credenziale del servizio (che è un sottoinsieme di qualcosa chiamato chiave del servizio). Questo esempio estrae la credenziale e la scrive in un file in cui gli SDK COS IBM
possono automaticamente eseguire l'origine della chiave API e dell'ID istanza del servizio. Per prima cosa, crea la Chiave del servizio (denominata config-example e associata a un'istanza COS denominata cos-dev-enablement in questo esempio):
ic resource service-key-create config-example --instance-name cos-dev-enablement
Quindi, estrarre la credenziale e creare il file cos_credential:
ic resource service-key config-example --output JSON | jq '.[].credentials' > ~/.bluemix/cos_credentials
Descrizione degli oggetti endpoints
Il sito endpoints URL (https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints) fornito come parte della credenziale del servizio fornisce un elenco di tutti i possibili endpoint che possono essere utilizzati
durante la connessione di un client:
{
"identity-endpoints":{
"iam-token":"iam.cloud.ibm.com",
"iam-policy":"iampap.cloud.ibm.com"
},
"service-endpoints":{
"cross-region":{
"us":{
"public":{
"us-geo":"s3.us.cloud-object-storage.appdomain.cloud",
"Dallas":"s3.dal.us.cloud-object-storage.appdomain.cloud",
"Washington":"s3.wdc.us.cloud-object-storage.appdomain.cloud",
"San Jose":"s3.sjc.us.cloud-object-storage.appdomain.cloud"
},
"private":{
"us-geo":"s3.private.us.cloud-object-storage.appdomain.cloud",
"Dallas":"s3.private.dal.us.cloud-object-storage.appdomain.cloud",
"Washington":"s3.private.wdc.us.cloud-object-storage.appdomain.cloud",
"San Jose":"s3.private.sjc.us.cloud-object-storage.appdomain.cloud"
},
"direct":{
"us-geo":"s3.direct.us.cloud-object-storage.appdomain.cloud",
"Dallas":"s3.direct.dal.us.cloud-object-storage.appdomain.cloud",
"Washington":"s3.direct.wdc.us.cloud-object-storage.appdomain.cloud",
"San Jose":"s3.direct.sjc.us.cloud-object-storage.appdomain.cloud"
}
},
"eu":{
"public":{
"eu-geo":"s3.eu.cloud-object-storage.appdomain.cloud",
"Amsterdam":"s3.ams.eu.cloud-object-storage.appdomain.cloud",
"Frankfurt":"s3.fra.eu.cloud-object-storage.appdomain.cloud",
/** "Milan":"s3.mil.eu.cloud-object-storage.appdomain.cloud"*/
},
"private":{
"eu-geo":"s3.private.eu.cloud-object-storage.appdomain.cloud",
"Amsterdam":"s3.private.ams.eu.cloud-object-storage.appdomain.cloud",
"Frankfurt":"s3.private.fra.eu.cloud-object-storage.appdomain.cloud",
/** "Milan":"s3.private.mil.eu.cloud-object-storage.appdomain.cloud"*/
},
"direct":{
"eu-geo":"s3.direct.eu.cloud-object-storage.appdomain.cloud",
"Amsterdam":"s3.direct.ams.eu.cloud-object-storage.appdomain.cloud",
"Frankfurt":"s3.direct.fra.eu.cloud-object-storage.appdomain.cloud",
/** "Milan":"s3.direct.mil.eu.cloud-object-storage.appdomain.cloud"*/
}
},
"ap":{
"public":{
"ap-geo":"s3.ap.cloud-object-storage.appdomain.cloud",
"Tokyo":"s3.tok.ap.cloud-object-storage.appdomain.cloud",
"Seoul":"s3.seo.ap.cloud-object-storage.appdomain.cloud",
"Hong Kong":"s3.hkg.ap.cloud-object-storage.appdomain.cloud",
"Sydney":"s3.syd.ap.cloud-object-storage.appdomain.cloud",
"Osaka":"s3.osa.ap.cloud-object-storage.appdomain.cloud"
},
"private":{
"ap-geo":"s3.private.ap.cloud-object-storage.appdomain.cloud",
"Tokyo":"s3.private.tok.ap.cloud-object-storage.appdomain.cloud",
"Seoul":"s3.private.seo.ap.cloud-object-storage.appdomain.cloud",
"Hong Kong":"s3.private.hkg.ap.cloud-object-storage.appdomain.cloud",
"Sydney":"s3.private.syd.ap.cloud-object-storage.appdomain.cloud",
"Osaka":"s3.private.osa.ap.cloud-object-storage.appdomain.cloud"
},
"direct":{
"ap-geo":"s3.direct.ap.cloud-object-storage.appdomain.cloud",
"Tokyo":"s3.direct.tok.ap.cloud-object-storage.appdomain.cloud",
"Seoul":"s3.direct.seo.ap.cloud-object-storage.appdomain.cloud",
"Hong Kong":"s3.direct.hkg.ap.cloud-object-storage.appdomain.cloud",
"Sydney":"s3.direct.syd.ap.cloud-object-storage.appdomain.cloud",
"Osaka":"s3.direct.osa.ap.cloud-object-storage.appdomain.cloud"
}
}
},
"regional":{
"us-south":{
"public":{
"us-south":"s3.us-south.cloud-object-storage.appdomain.cloud"
},
"private":{
"us-south":"s3.private.us-south.cloud-object-storage.appdomain.cloud"
},
"direct":{
"us-south":"s3.direct.us-south.cloud-object-storage.appdomain.cloud"
}
},
"us-east":{
"public":{
"us-east":"s3.us-east.cloud-object-storage.appdomain.cloud"
},
"private":{
"us-east":"s3.private.us-east.cloud-object-storage.appdomain.cloud"
},
"direct":{
"us-east":"s3.direct.us-east.cloud-object-storage.appdomain.cloud"
}
},
"eu-gb":{
"public":{
"eu-gb":"s3.eu-gb.cloud-object-storage.appdomain.cloud"
},
"private":{
"eu-gb":"s3.private.eu-gb.cloud-object-storage.appdomain.cloud"
},
"direct":{
"eu-gb":"s3.direct.eu-gb.cloud-object-storage.appdomain.cloud"
}
},
"eu-de":{
"public":{
"eu-de":"s3.eu-de.cloud-object-storage.appdomain.cloud"
},
"private":{
"eu-de":"s3.private.eu-de.cloud-object-storage.appdomain.cloud"
},
"direct":{
"eu-de":"s3.direct.eu-de.cloud-object-storage.appdomain.cloud"
}
},
"jp-tok":{
"public":{
"jp-tok":"s3.jp-tok.cloud-object-storage.appdomain.cloud"
},
"private":{
"jp-tok":"s3.private.jp-tok.cloud-object-storage.appdomain.cloud"
},
"direct":{
"jp-tok":"s3.direct.jp-tok.cloud-object-storage.appdomain.cloud"
}
},
"jp-osa":{
"public":{
"jp-osa":"s3.jp-osa.cloud-object-storage.appdomain.cloud"
},
"private":{
"jp-osa":"s3.private.jp-osa.cloud-object-storage.appdomain.cloud"
},
"direct":{
"jp-osa":"s3.direct.jp-osa.cloud-object-storage.appdomain.cloud"
}
},
"au-syd":{
"public":{
"au-syd":"s3.au-syd.cloud-object-storage.appdomain.cloud"
},
"private":{
"au-syd":"s3.private.au-syd.cloud-object-storage.appdomain.cloud"
},
"direct":{
"au-syd":"s3.direct.au-syd.cloud-object-storage.appdomain.cloud"
}
},
"ca-tor":{
"public":{
"ca-tor":"s3.ca-tor.cloud-object-storage.appdomain.cloud"
},
"private":{
"ca-tor":"s3.private.ca-tor.cloud-object-storage.appdomain.cloud"
},
"direct":{
"ca-tor":"s3.direct.ca-tor.cloud-object-storage.appdomain.cloud"
}
},
"br-sao":{
"public":{
"br-sao":"s3.br-sao.cloud-object-storage.appdomain.cloud"
},
"private":{
"br-sao":"s3.private.br-sao.cloud-object-storage.appdomain.cloud"
},
"direct":{
"br-sao":"s3.direct.br-sao.cloud-object-storage.appdomain.cloud"
}
}
},
"single-site":{
"ams03":{
"public":{
"ams03":"s3.ams03.cloud-object-storage.appdomain.cloud"
},
"private":{
"ams03":"s3.private.ams03.cloud-object-storage.appdomain.cloud"
},
"direct":{
"ams03":"s3.direct.ams03.cloud-object-storage.appdomain.cloud"
}
},
"che01":{
"public":{
"che01":"s3.che01.cloud-object-storage.appdomain.cloud"
},
"private":{
"che01":"s3.private.che01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"che01":"s3.direct.che01.cloud-object-storage.appdomain.cloud"
}
},
"mon01":{
"public":{
"mon01":"s3.mon01.cloud-object-storage.appdomain.cloud"
},
"private":{
"mon01":"s3.private.mon01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"mon01":"s3.direct.mon01.cloud-object-storage.appdomain.cloud"
}
},
"mex01":{
"public":{
"mex01":"s3.mex01.cloud-object-storage.appdomain.cloud"
},
"private":{
"mex01":"s3.private.mex01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"mex01":"s3.direct.mex01.cloud-object-storage.appdomain.cloud"
}
},
"sjc04":{
"public":{
"sjc04":"s3.sjc04.cloud-object-storage.appdomain.cloud"
},
"private":{
"sjc04":"s3.private.sjc04.cloud-object-storage.appdomain.cloud"
},
"direct":{
"sjc04":"s3.direct.sjc04.cloud-object-storage.appdomain.cloud"
}
},
"mil01":{
"public":{
"mil01":"s3.mil01.cloud-object-storage.appdomain.cloud"
},
"private":{
"mil01":"s3.private.mil01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"mil01":"s3.direct.mil01.cloud-object-storage.appdomain.cloud"
}
},
"par01":{
"public":{
"par01":"s3.par01.cloud-object-storage.appdomain.cloud"
},
"private":{
"par01":"s3.private.par01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"par01":"s3.direct.par01.cloud-object-storage.appdomain.cloud"
}
},
"sng01":{
"public":{
"sng01":"s3.sng01.cloud-object-storage.appdomain.cloud"
},
"private":{
"sng01":"s3.private.sng01.cloud-object-storage.appdomain.cloud"
},
"direct":{
"sng01":"s3.direct.sng01.cloud-object-storage.appdomain.cloud"
}
}
}
},
"resource-configuration-endpoints":{
"global":{
"public":"config.cloud-object-storage.cloud.ibm.com/v1",
"private":"config.private.cloud-object-storage.cloud.ibm.com/v1",
"direct":"config.direct.cloud-object-storage.cloud.ibm.com/v1"
}
}
}
Quando crei un client utilizzando una libreria che richiede un valore di endpoint "auth", devi aggiungere /oidc/token alla fine dell'URL iam-token fornito in precedenza.
Utilizzo delle credenziali del servizio per l'accesso a un singolo bucket
Quando viene creata una credenziale del servizio, all'ID servizio sottostante viene concesso un ruolo su tutta l'istanza di Object Storage. Se l'obiettivo previsto è un utilizzo della credenziale per concedere l'accesso a un sottoinsieme di bucket e non all'intera istanza, questa politica deve essere modificata. Per ulteriori dettagli, vedi la pagina Autorizzazioni bucket.
Utilizzo delle credenziali di servizio per l'accesso a singoli oggetti/cartelle
Quando viene creata una credenziale del servizio, all'ID servizio sottostante viene concesso un ruolo su tutta l'istanza di Object Storage. Se si vuole che la credenziale sia usata per garantire l'accesso a un sottoinsieme di bucket e non all'intera istanza, è necessario modificare questo criterio. Per ulteriori dettagli, vedi la pagina Assegnazione dell'accesso agli oggetti in un bucket utilizzando le condizioni di accesso IAM.
Utilizzo di una chiave API per accedere a più istanze
Se si intende utilizzare la stessa chiave API per più di un'istanza Object Storage, si può modificare il criterio di accesso dell'ID servizio per concedere l'accesso. Ogni chiave API associata a un ID servizio eredita il criterio assegnato all'ID servizio.
Utilizzare l'ID del servizio generato da un'istanza esistente
Quando si crea una credenziale di servizio per una particolare istanza, tale credenziale ha un valore di chiave API. Per utilizzare la stessa chiave API con un'altra istanza Object Storage, modificare il criterio di accesso per l'id del servizio associato a quella chiave API per garantirgli l'accesso all'istanza aggiuntiva.
Generare direttamente un ID servizio
Se si preferisce limitare la visibilità della chiave API dopo la sua creazione, seguire la procedura descritta in Creazione di una chiave API per un ID servizio. Come indicato in quell'argomento, assicurarsi di copiare o scaricare la chiave al momento della creazione. Quindi, configurare i criteri di accesso per l'ID servizio in modo che abbia accesso a una o più istanze Object Storage.
Confronto tra chiave API e HMAC
In generale, le chiavi API IAM sono il metodo preferito di autenticazione per IBM Cloud® Object Storage. HMAC è supportato principalmente per la compatibilità con una versione precedente con le applicazioni migrate da IaaS Object Storage e le applicazioni legacy S3. IAM è anche supportato nativamente quando si sviluppano applicazioni con gli SDK COS. La scadenza e l'aggiornamento dei token vengono gestiti automaticamente per semplificare il processo.
Per ulteriori informazioni su IAM, visita Introduzione a IAM
Per ulteriori informazioni su HMAC, visita Utilizzo delle credenziali HMAC