서비스 인증 정보
서비스 자격 증명은 애플리케이션을 Object Storage 에 연결하는 데 필요한 정보를 JSON 문서로 패키징하여 제공합니다.
서비스 인증 정보는 항상 서비스 ID와 연관되며, 새 서비스 ID는 새 인증 정보와 함께 작성할 수 있습니다.
신임 정보를 보려면 관리자 플랫폼 역할 또는 resource-controller.credential.retrieve_all 조치가 있는 사용자 정의 역할이 부여되어야 합니다. 이 업데이트 에 대한 자세한 정보는 문서 를 참조하십시오.
서비스 인증 정보를 작성하려면 다음 단계를 사용하십시오.
- IBM Cloud 콘솔에 로그인하여 Object Storage의 인스턴스로 이동하십시오.
- 측면 탐색에서 서비스 인증 정보를 클릭하십시오.
- 새 인증 정보를 클릭하고 필요한 정보를 제공하십시오. HMAC 신임 정보를 생성하려면
Include HMAC Credential를On로 전환하십시오. 계속하기 전에 옵션이On로 전환되었는지 확인하십시오. - 추가를 클릭하여 서비스 인증 정보를 생성하십시오.
서비스 신임 정보를 작성할 때 역할에 None 값을 제공할 수 있습니다. 이는 의도하지 않거나 불필요한 IAM 액세스 정책의 작성을 방지합니다. 연관된 서비스 ID에 대한 모든 액세스 정책은 IAM 콘솔 또는 API를 사용하여 관리해야 합니다.
인증 정보의 값은 다음과 같습니다.
| 필드 이름 | 값 |
|---|---|
apikey |
서비스 ID에 대해 작성된 새 API 키 |
cos_hmac_keys |
S3 호환 가능 도구 및 라이브러리와 함께 사용할 액세스 키 및 비밀 키 쌍 |
endpoints |
사용 가능한 엔드포인트의 JSON 표현에 대한 링크 |
iam_apikey_description |
API 키 설명 - 처음에 생성되지만 편집 가능함 |
iam_apikey_name |
API 키 이름 - 처음에 생성되지만 편집 가능함 |
iam_role_crn |
지정된 역할의 고유 ID |
iam_serviceid_crn |
서비스 ID의 고유 ID |
resource_instance_id |
인증 정보가 액세스하는 Object Storage 인스턴스의 고유 식별자. 이는 서비스 인증 정보라고도 합니다. |
서비스 인증 정보의 예는 다음과 같습니다.
{
"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::"
}
IBM Cloud CLI를 사용하여 새 서비스 인증 정보 ( 서비스 키라는 항목의 서브세트) 를 작성할 수도 있습니다. 이 예제에서는 신임 정보를 추출하여 IBM COS SDK가 자동으로 API키 및 서비스 인스턴스 ID를 제공할 수 있는 파일에 기록합니다. 먼저 서비스 키를 작성하십시오 (이 예에서는 config-example 이고 cos-dev-enablement 라는
COS 인스턴스와 연관됨).
ic resource service-key-create config-example --instance-name cos-dev-enablement
그런 다음 신임 정보를 추출하고 cos_credential 파일을 작성하십시오.
ic resource service-key config-example --output JSON | jq '.[].credentials' > ~/.bluemix/cos_credentials
endpoints 오브젝트 이해
서비스 자격 증명의 일부로 제공되는 endpoints URL (https://control.cloud-object-storage.cloud.ibm.com/v2/endpoints)은 클라이언트를 연결할 때 사용할 수 있는 모든 가능한 엔드포인트의 목록을 제공합니다:
{
"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"
}
}
}
"auth" 엔드포인트 값이 필요한 라이브러리를 사용하여 클라이언트를 작성할 때는 위에 제공된 /oidc/token URL의 끝에 iam-token을 추가해야 합니다.
단일 버킷 액세스를 위해 서비스 인증 정보 사용
서비스 인증 정보가 작성될 때는 기반 서비스 ID에 전체 Object Storage 인스턴스에 대한 역할이 부여됩니다. 전체 인스턴스가 아니라 버킷의 서브세트에 대한 액세스를 부여하는 것이 해당 인증 정보의 사용 의도인 경우에는 이 정책을 편집해야 합니다. 세부사항은 버킷 권한 페이지를 참조하십시오.
단일 개체/폴더 액세스에 서비스 자격 증명 사용
서비스 인증 정보가 작성될 때는 기반 서비스 ID에 전체 Object Storage 인스턴스에 대한 역할이 부여됩니다. 전체 인스턴스가 아닌 버킷의 하위 집합에 대한 액세스 권한을 부여하는 데 자격 증명을 사용하려는 경우 이 정책을 편집해야 합니다. 자세한 정보는 IAM 액세스 조건을 사용하여 버킷 내 오브젝트에 대한 액세스 지정 페이지를 참조하십시오.
여러 인스턴스에 액세스하기 위한 API 키 사용
둘 이상의 Object Storage 인스턴스에 동일한 API 키를 사용하려는 경우 서비스 ID의 액세스 정책을 수정하여 액세스 권한을 부여할 수 있습니다. 서비스 ID와 연관된 각 API 키는 서비스 ID에 지정되는 정책을 상속합니다.
기존 인스턴스에서 생성된 서비스 ID 사용
특정 인스턴스에 대한 서비스 자격 증명을 만들 때 해당 자격 증명에는 API 키 값이 있습니다. 동일한 API 키를 다른 Object Storage 인스턴스에서 사용하려면 해당 API 키와 연결된 서비스 아이디에 대한 액세스 정책을 수정하여 추가 인스턴스에 대한 액세스 권한을 부여하세요.
서비스 ID 직접 생성
API 키를 만든 후 API 키의 공개를 제한하려면 서비스 ID에 대한 API 키 만들기의 단계를 따르세요. 해당 항목에서 언급했듯이 키를 생성할 때 복사하거나 다운로드해야 합니다. 그런 다음 서비스 ID에 대한 액세스 정책을 구성하여 하나 이상의 Object Storage 인스턴스에 액세스할 수 있도록 합니다.
API 키 대 HMAC
일반적으로 IBM Cloud® Object Storage에 대해 선호되는 인증 방법은 IAM API 키입니다. HMAC은 주로 IaaS Object Storage 및 레거시 S3 애플리케이션에서 마이그레이션한 애플리케이션의 이전 버전과의 호환성을 위해 지원됩니다. IAM은 또한 COS SDK를 사용하여 애플리케이션을 개발할 때 기본적으로 지원됩니다. 프로세스를 간소화하기 위해 토큰 만기 및 새로 고치기가 자동으로 처리됩니다.
IAM에 대한 자세한 정보를 얻으려면 IAM 시작하기를 참조하십시오.
HMAC에 대한 자세한 정보를 얻으려면 HMAC 인증 정보 사용을 참조하십시오.