Données d'identification du service
Un certificat de service fournit les informations nécessaires pour connecter une application à Object Storage dans un document JSON.
Les données d'identification de service sont toujours associées à un ID de service et de nouveaux ID de service peuvent être créés avec de nouvelles données d'identification de service.
Pour afficher des données d'identification, vous devez disposer du rôle de plateforme Administrateur ou d'un rôle personnalisé doté de l'action resource-controller.credential.retrieve_all. Pour plus d'informations sur cette mise à jour,
voir la documentation.
Pour créer des données d'identification de service, procédez comme suit :
- Connectez-vous à la console IBM Cloud et accédez à votre instance d'Object Storage.
- Dans la barre de navigation, cliquez sur Données d'identification pour le service.
- Cliquez sur Nouvelles données d'identification et fournissez les informations nécessaires. Si vous souhaitez générer des données d'identification HMAC, basculez le
Include HMAC CredentialsurOn. Vérifiez que l'option est basculée surOnavant de continuer. - Cliquez sur Ajouter pour générer un identifiant de service.
Lors de la création d'une donnée d'identification de service, il est possible de fournir une valeur de None pour le rôle. Cela empêchera la création de règles d'accès IAM non intentionnelles ou inutiles. Les règles d'accès pour l'ID
de service associé doivent être gérées à l'aide de la console IAM ou des API.
Les données d'identification ont les valeurs suivantes :
| Nom de zone | Valeur |
|---|---|
apikey |
Nouvelle clé d'API créée pour l'ID de service |
cos_hmac_keys |
Paire clé d'accès/clé secrète à utiliser avec des outils et des bibliothèques compatibles S3 |
endpoints |
Lien vers la représentation JSON des noeuds finaux disponibles |
iam_apikey_description |
Description de la clé d'API - générée au départ mais modifiable |
iam_apikey_name |
Nom de la clé d'API - généré au départ mais modifiable |
iam_role_crn |
Identificateur unique pour le rôle affecté |
iam_serviceid_crn |
Identificateur unique pour l'ID de service |
resource_instance_id |
Identificateur unique pour l'instance d'Object Storage à laquelle les données d'identification permettent d'accéder. Celles-ci sont également appelées données d'identification de service. |
Voici un exemple de données d'identification de service :
{
"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::"
}
Vous pouvez également utiliser l'interface de ligne de commande IBM Cloud pour créer de nouvelles données d'identification de service (qui est un sous-ensemble de quelque chose appelé clé de service). Cet exemple extrait les données d'identification
et les écrit dans un fichier dans lequel les SDK IBM COS peuvent automatiquement générer la clé d'API et l'ID d'instance de service. Tout d'abord, créez la clé de service (appelée config-example et associée à une instance COS appelée
cos-dev-enablement dans cet exemple):
ic resource service-key-create config-example --instance-name cos-dev-enablement
Ensuite, extrayez les données d'identification et créez le fichier cos_credential:
ic resource service-key config-example --output JSON | jq '.[].credentials' > ~/.bluemix/cos_credentials
Présentation des objets endpoints
Le site endpoints URL (https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints) fourni dans le cadre de l'accréditation du service fournit une liste de tous les points d'extrémité possibles qui peuvent être
utilisés lors de la connexion d'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"
}
}
}
Lorsque vous créez un client en utilisant une bibliothèque qui nécessite une valeur de noeud final "auth", vous devez ajouter /oidc/token à la fin de l'URL iam-token fournie ci-dessus.
Utilisation des données d'identification de service pour un accès à un seul compartiment
Lorsque des données d'identification de service sont créées, un rôle est affecté à l'ID de service sous-jacent sur toute l'instance d'Object Storage. Si vous avez l'intention d'utiliser les données d'identification de service pour octroyer des droits d'accès à un sous-ensemble de compartiments et non à l'instance dans son intégralité, cette règle doit être éditée. Pour plus d'informations, voir la rubrique Droits des compartiments.
Utilisation des informations d'identification du service pour l'accès à un objet/dossier unique
Lorsque des données d'identification de service sont créées, un rôle est affecté à l'ID de service sous-jacent sur toute l'instance d'Object Storage. Si l'intention est d'utiliser le justificatif d'identité pour accorder l'accès à un sous-ensemble de godets et non à l'instance entière, cette politique doit être modifiée. Voir la page Affectation d'accès à des objets dans un compartiment à l'aide de conditions d'accès IAM pour plus de détails.
Utilisation d'une clé API pour accéder à plusieurs instances
Si l'intention est d'utiliser la même clé API pour plus d'une instance Object Storage, vous pouvez modifier la politique d'accès de l'identifiant de service pour accorder l'accès. Chaque clé d'API associée à un ID de service hérite de la règle qui est affectée à cet ID de service.
Utiliser l'identifiant de service généré à partir d'une instance existante
Lorsque vous créez un identifiant de service pour une instance particulière, cet identifiant a une valeur de clé API. Pour utiliser cette même clé API avec une autre instance Object Storage, modifiez la politique d'accès pour l'identifiant de service associé à cette clé API afin de lui accorder l'accès à l'instance supplémentaire.
Générer directement un identifiant de service
Si vous préférez limiter la visibilité de la clé API après sa création, suivez les étapes de la section Création d'une clé API pour un identifiant de service. Comme indiqué dans cette rubrique, veillez à copier ou à télécharger la clé au moment de la création. Ensuite, configurez les politiques d'accès pour que l'identifiant du service ait accès à une ou plusieurs instances Object Storage
Clé d'API ou HMAC
En général, l'utilisation des clés d'API IAM est privilégiée par rapport à d'autres méthodes pour l'authentification auprès d'IBM Cloud® Object Storage. HMAC est pris en charge principalement pour des raisons de compatibilité avec une version antérieure, avec des applications qui ont migré de IaaS Object Storage et des applications héritées de S3. IAM est également pris en charge en mode natif lors du développement d'applications avec les SDK COS. L'expiration et l'actualisation des jetons sont gérées automatiquement pour simplifier le processus.
Pour plus d'informations sur IAM, voir Initiation à IAM.
Pour plus d'informations sur HMAC, voir Utilisation des données d'identification HMAC.