IBM Cloud Docs
HMAC 資格情報の使用

HMAC 資格情報の使用

HMAC 資格情報は、認証を必要とする S3-compatible のツールおよびライブラリーで使用するためのアクセス・キーと秘密鍵のペアで構成されます。

HMAC 資格情報が定義されました

IBM Cloud® Object Storage API は、オブジェクトを読み書きするための REST ベースの API です。 認証と許可のために IBM Cloud® Identity and Access Management が使用され、アプリケーションを IBM Cloud に簡単にマイグレーションできるように S3 API のサブセットがサポートされています。

コンソールでの HMAC 資格情報の作成

ユーザーは、コンソールで資格情報を作成するときに Include HMAC CredentialOn に切り替えることにより、 サービス資格情報 の一部として HMAC 資格情報のセットを作成できます。 図 1 は、「拡張オプション」を選択して HMAC パラメーターを設定するオプションを示しています。

詳細オプションからのHMAC設定
HMACクレデンシャルを含む

サービス資格情報が作成されると、HMAC 鍵が cos_hmac_keys フィールドに組み込まれます。 その後、これらの HMAC 鍵はサービス ID と関連付けられ、サービス ID の役割に従って許可されるリソースまたは操作にアクセスするために使用できるようになります。

サービス資格情報の作成時に、役割に値 None を指定することができます。 これにより、意図しない、または不要な IAM アクセス・ポリシーが作成されなくなります。 関連付けられたサービス ID のアクセス・ポリシーは、IAM コンソールまたは API を使用して管理する必要があります。

CLI を使用した HMAC 資格情報の作成

IBM Cloud® Object Storage CLI を使用して資格情報を作成することもできます。 この例を使用するには、事前に IBM Cloud Platform コマンド・ラインの指示 をインストールしておく必要があります。

ibmcloud resource service-key-create <key-name-without-spaces> Writer --instance-name "<instance name--use quotes if your instance name has spaces>" --parameters '{"HMAC":true}'

HMAC認証情報の例

生成されたキーの結果を保管したい場合は、例の最後に > file.skey を付加します。 この命令セットの場合、cos_hmac_keys ヘッダーと子キー、access_key_id および secret_access_key の存在が確認できれば十分です。

    cos_hmac_keys:
        access_key_id:      7exampledonotusea6440da12685eee02
        secret_access_key:  8not8ed850cddbece407exampledonotuse43r2d2586

環境変数としての HMAC 資格情報の設定

資格情報を作成したら、それらを環境変数 (関係するオペレーティング・システムに固有の説明) として設定できます。 例えば、例 3 では、.bash_profile スクリプトに、シェルの開始時にエクスポートされ、開発で使用される COS_HMAC_ACCESS_KEY_IDCOS_HMAC_SECRET_ACCESS_KEY が含まれています。

export COS_HMAC_ACCESS_KEY_ID="7exampledonotusea6440da12685eee02"
export COS_HMAC_SECRET_ACCESS_KEY="8not8ed850cddbece407exampledonotuse43r2d2586"

次のステップ

直接の REST API 呼び出しで使用する署名を作成するために HMAC 資格情報を使用する場合は、以下のように追加のヘッダーが必要な点に注意してください。

  1. すべての要求に、x-amz-date 形式の日付が設定された %Y%m%dT%H%M%SZ ヘッダーが必要です。
  2. ペイロードを持つリクエスト(オブジェクトのアップロード、複数のオブジェ クトの削除など)はすべて、ペイロード内容のSHA256ハッシュを持つ'x-amz-content-sha256 ヘッダーを提供しなければならない。
  3. ACL (public-read 以外) はサポートされません。

現在、S3 対応のすべてのツールがサポートされているわけではありません。 一部のツールは、バケット作成時に public-read 以外の ACL を設定しようとします。 これらのツールによるバケット作成は失敗する。 PUT bucket リクエストがサポートされていない ACL エラーで失敗した場合、まず、IBM Cloud Object Storageで getting started に示したようにコンソールを使ってバケットを作成し、そのバケットにオブジェクトを読み書きするようにツールを設定する。 オブジェクト書き込みに対する ACL を設定するツールは、現在サポートされていません。