サービス資格情報
サービス・クレデンシャルは、JSONドキュメントにパッケージ化された Object Storage、アプリケーションに接続するために必要な情報を提供する。
サービス資格情報は常にサービス 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 のインスタンスの固有 ID。 これは、サービス資格情報とも呼ばれます。 |
サービス資格情報の例を以下に示します。
{
"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::"
}
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 Keyを別のObject Storageインスタンスで使用するには、そのAPI Keyに関連付けられたサービスIDのアクセスポリシーを変更して、追加インスタンスへのアクセスを許可する。
サービスIDを直接生成する
作成後のAPIキーの可視性を制限したい場合は、「サービスIDのAPIキーを作成する」の手順に従ってください。 そのトピックにあるように、作成時にキーをコピーするかダウンロードするようにしてください。 次に、1つ以上のObject Storageインスタンスにアクセスできるように、サービスIDのアクセスポリシーを設定する。
API キー vs HMAC
一般的には、IBM Cloud® Object Storage の認証メソッドとして望ましいのは IAM API キーです。 HMACは主に、 IaaS Object Storage、レガシー S3 アプリケーションから移行したアプリケーションの旧バージョンとの互換性のためにサポートされている。 また、COS SDK を使用してアプリケーションを開発する際も、ネイティブにサポートされるのは IAM です。 プロセスを単純化するために、トークンの満了とリフレッシュは自動的に処理されます。
IAM について詳しくは、IAM の概要にアクセスしてください。
HMAC について詳しくは、HMAC 資格情報の使用にアクセスしてください。