IBM Cloud Docs
サービス資格情報

サービス資格情報

サービス・クレデンシャルは、JSONドキュメントにパッケージ化された Object Storage、アプリケーションに接続するために必要な情報を提供する。

サービス資格情報は常にサービス ID に関連付けられ、新しい資格情報と一緒に新規サービス ID を作成できます。

資格情報を表示するには、管理者プラットフォーム役割、または resource-controller.credential.retrieve_all アクションを持つカスタム役割が付与されている必要があります。 この更新 について詳しくは、 資料 を参照してください。

サービス資格情報を作成するには、以下のステップを使用します。

  1. IBM Cloud コンソールにログインし、ご使用の Object Storage のインスタンスにナビゲートします。
  2. サイドにあるナビゲーションで、**「サービス資格情報」**をクリックします。
  3. **「新規資格情報」**をクリックし、必要な情報を指定します。 HMAC 資格情報を生成する場合は、 Include HMAC CredentialOn に切り替えます。 続行する前に、オプションが On に切り替えられていることを確認してください。
  4. **「追加」**をクリックして、サービス資格情報を生成します。

サービス資格情報の作成時に、役割に値 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 資格情報の使用にアクセスしてください。