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:

  1. Accedi alla console IBM Cloud e vai alla tua istanza di Object Storage.
  2. Nella navigazione laterale, fai clic su Credenziali del servizio.
  3. Fai clic su Nuova credenziale e fornisci le informazioni necessarie. Se si desidera generare le credenziali HMAC, passare da Include HMAC Credential a On. Verificare che l'opzione sia passata a On prima di continuare.
  4. 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:

Valori delle credenziali
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