Credenciales de servicio
Una credencial de servicio proporciona la información necesaria para conectar una aplicación a Object Storage empaquetada en un documento JSON.
Las credenciales de servicio siempre están asociadas a un ID de servicio, y se pueden crear nuevos ID de servicio junto con una credencial nueva.
Para ver una credencial, se le debe otorgar el rol de plataforma de administrador o un rol personalizado que tenga la acción resource-controller.credential.retrieve_all
. Para obtener más información sobre esta actualización,
consulte la documentación.
Siga los pasos siguientes para crear una credencial de servicio:
- Inicie una sesión en la consola de IBM Cloud y vaya a la instancia de Object Storage.
- En el panel de navegación lateral, pulse Credenciales de servicio.
- Pulse Nueva credencial y proporcione la información necesaria. Si desea generar credenciales HMAC, cambie
Include HMAC Credential
aOn
. Verifique que la opción se ha conmutado aOn
antes de continuar. - Pulse Añadir para generar la credencial de servicio.
Al crear una credencial de servicio, es posible proporcionar un valor de None
para el rol. Esto impedirá la creación de políticas de acceso de IAM indeseadas o innecesarias. Las políticas de acceso para el ID de servicio asociado
deberán gestionarse utilizando la consola o las API de IAM.
La credencial tiene los valores siguientes:
Nombre de campo | Valor |
---|---|
apikey |
Nueva clave de API que se crea para el ID de servicio |
cos_hmac_keys |
Par de clave de acceso y clave secreta para que se utilice con herramientas y bibliotecas compatibles con S3 |
endpoints |
Enlace con la representación JSON de los puntos finales disponibles |
iam_apikey_description |
Descripción de clave de API; se genera inicialmente, pero se puede editar |
iam_apikey_name |
nombre de clave de API; se genera inicialmente, pero se puede editar |
iam_role_crn |
Identificador exclusivo del rol asignado |
iam_serviceid_crn |
Identificador exclusivo del ID de servicio |
resource_instance_id |
Identificador exclusivo de la instancia de Object Storage a la que accede la credencial. También recibe el nombre de credencial de servicio. |
A continuación se muestra una credencial de servicio:
{
"apikey": "0viPHOY7LbLNa9eLftrtHPpTjoGv6hbLD1QalRXikliJ",
"cos_hmac_keys": {
"access_key_id": "347aa3a4b34344f8bc7c7cccdf856e4c",
"secret_access_key": "gvurfb82712ad14W7a7915h763a6i87155d30a1234364f61"
},
"endpoints": "https://control.cloud-object-storage.test.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::"
}
También puede utilizar la CLI de IBM Cloud para crear una nueva credencial de servicio (que es un subconjunto de algo denominado clave de servicio). Este ejemplo extrae la credencial y la escribe en un archivo donde los SDK de IBM COS
pueden obtener automáticamente la clave de API y el ID de instancia de servicio. En primer lugar, cree la clave de servicio (denominada config-example
y asociada a una instancia de COS denominada cos-dev-enablement
en este ejemplo):
ic resource service-key-create config-example --instance-name cos-dev-enablement
A continuación, extraiga la credencial y cree el archivo cos_credential
:
ic resource service-key config-example --output JSON | jq '.[].credentials' > ~/.bluemix/cos_credentials
Visión general de los objetos endpoints
La dirección endpoints
URL (https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints
) proporcionada como parte de la credencial de servicio proporciona una lista de todos los posibles puntos finales que pueden
utilizarse al conectar un cliente:
{
"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"
}
}
}
Cuando se crea un cliente mediante una biblioteca que requiere un valor de punto final "auth", debe añadir /oidc/token
al final del URL iam-token
proporcionado anteriormente.
Utilización de credenciales de servicio para el acceso a un solo grupo
Cuando se crea una credencial de servicio, al ID de servicio subyacente se le otorga un rol sobre toda la instancia de Object Storage. Si la intención es que la credencial se utilice para otorgar acceso a un subconjunto de grupos y no a la instancia completa, se tiene que editar esta política. Consulte la página Permisos de grupo para obtener más detalles.
Uso de credenciales de servicio para el acceso a un único objeto/carpeta
Cuando se crea una credencial de servicio, al ID de servicio subyacente se le otorga un rol sobre toda la instancia de Object Storage. Si la intención es que la credencial se utilice para conceder acceso a un subconjunto de cubos y no a toda la instancia, es necesario editar esta política. Consulte la página Asignación de acceso a objetos dentro de un grupo utilizando condiciones de acceso de IAM para obtener más detalles.
Utilización de una clave API para acceder a varias instancias
Si la intención es utilizar la misma clave de API para más de una instancia Object Storage, puede modificar la política de acceso del ID de servicio para conceder el acceso. Cada clave de API que está asociada con un ID de servicio hereda la política que se ha asignado al ID de servicio.
Utilizar el ID de servicio generado a partir de una instancia existente
Cuando se crea una credencial de servicio para una instancia concreta, dicha credencial tiene un valor de Clave API. Para utilizar esa misma Clave de API con otra instancia Object Storage, modifique la política de acceso para el id de servicio asociado a esa Clave de API para concederle acceso a la instancia adicional.
Generar directamente un ID de servicio
Si prefiere limitar la visibilidad de la clave API tras su creación, siga los pasos indicados en Creación de una clave API para un ID de servicio. Como se indica en ese tema, asegúrate de copiar o descargar la clave en el momento de la creación. A continuación, configure las políticas de acceso para que el ID de servicio tenga acceso a una o varias instancias Object Storage.
Clave de API frente a HMAC
En general, las claves de API de IAM son el método de autenticación recomendado para IBM Cloud® Object Storage. HMAC se admite principalmente por compatibilidad con una versión anterior con aplicaciones que migraron de IaaS Object Storage y aplicaciones heredadas de S3. El IAM también recibe soporte de forma nativa cuando se desarrollan aplicaciones con los SDK de COS. La caducidad y la renovación de señales se gestionan automáticamente para simplificar el proceso.
Para obtener más información sobre IAM, consulte Iniciación a IAM
Para obtener más información sobre HMAC, consulte Utilización de credenciales de HMAC