IBM Cloud Docs
シークレットへのアクセス

シークレットへのアクセス

IBM Cloud® Secrets Manager サービス・インスタンスにシークレットを保管した後、その値を取得できます。

開始前に

始める前に、必要なレベルのアクセス権限を持っていることを確認してください。 使用可能なシークレットのリストを表示するには、リーダー・サービス・ロールまたはそれ以上が必要です。 シークレット・キーの値をリトリーブするには、シークレット・リーダー・サービス・ロールまたはそれ以上が必要です。

UI でのシークレットの取得

Secrets Manager UIを使用することで、シークレットを取得することができます。 シークレットを取得するには、以下の手順を実行します。

  1. シークレット表で、**「アクション」**メニュー「アクション」アイコンをクリックして、シークレットのオプションのリストを開きます。
  2. シークレットの値を表示するには、 「シークレットの表示」 をクリックします。
  3. 安全な環境にいることを確認したら、 「確認」 をクリックします。

シークレットの値が 15 秒間表示された後、ダイアログが閉じます。

あなたの秘密が回転された後、バージョン履歴オプションから以前の秘密の値を見ることができます。

また、シークレットの詳細 (有効期限、ローテーション間隔、状態など) をリタイアすることもできます。

  1. シークレット表で、**「アクション」**メニュー「アクション」アイコンをクリックして、シークレットのオプションのリストを開きます。
  2. シークレットの値を表示するには、 「詳細」 をクリックします。

「シークレット (Secrets)」テーブルのフィルター・オプションから取得したシークレットをさらにフィルタリングし、シークレット・グループまたはシークレット・タイプ (あるいはその両方) を選択できます。

証明書のダウンロード

Secrets Manager UI を使用して証明書をダウンロードするには、以下の手順を実行します。

  1. コンソールで、**「メニュー」**アイコン「メニュー」アイコン **>「リソース・リスト」**をクリックします。
  2. サービスのリストから、Secrets Manager のインスタンスを選択します。
  3. シークレットテーブルで、ダウンロードしたい証明書のオーバーフロー・メニューを開きます。
  4. 「ダウンロード」 をクリックします。 証明書ファイルがローカル・システムにダウンロードされます。

CLI からのシークレットの取得

インスタンスにシークレットを保管した後、外部アプリに接続したり、保護サービスにアクセスしたりするために、シークレットの値を取得することが必要になる場合があります。 Secrets Manager CLI プラグインを使用すると、シークレットの値をリトリーブできます。

シークレットの値を取得したり、その詳細 (有効期限やローテーションの間隔や状態など) を確認したりするには、 ibmcloud secrets-manager secret コマンドを実行します。

ibmcloud secrets-manager secret --id SECRET_ID

このコマンドでは、シークレットの値と他のメタデータが出力されます。 コマンド・オプションについては、ibmcloud secrets-manager secret を参照してください。

シークレットの名前を使用してシークレットを取得することもできます。

ibmcloud secrets-manager secret-by-name --secret-type SECRET_TYPE --name SECRET_NAME --secret-group-name SECRET_GROUP_NAME

オプションのフラグ --secret-types および --match-all-labels を使用して、取得したシークレットをさらにフィルターに掛けることができます。

証明書のダウンロード

証明書を処理する場合、CLIを使用して証明書のペイロードをpemファイルにダウンロードする機能が必要になることがあります。 これを行うには、Secrets ManagerCLIプラグインとjqを使用できます。

証明書を pem ファイルに保管するには、ibmcloud secrets-manager secret コマンドを実行します。

ibmcloud secrets-manager secret --id=SECRET_ID | jq -r '.certificate' | sed 's/\\n/\n/g' > my-cert-file.pem

このコマンドは、証明書の値を出力し、それをmy-cert-file.pemに保管します。 コマンド・オプションについて詳しくは、ibmcloud secrets-manager secret を参照してください。

シークレット ID を使用した API でのシークレットの取得

インスタンスにシークレットを保管した後、外部アプリに接続したり、保護サービスにアクセスしたりするために、シークレットの値を取得することが必要になる場合があります。 Secrets Manager APIを使用すると、シークレットの値をリトリーブできます。

以下の要求例では、シークレットとその詳細 (有効期限、ローテーション間隔、状態など) を取得します。 API を呼び出す場合は、ID 変数と IAM トークンを、ご使用の Secrets Manager インスタンス固有の値で置き換えます。

curl -X GET
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{secret_ID}"

成功すると、シークレットの値が他のメタデータとともに応答で返されます。 必須およびオプションのリクエスト・パラメータの詳細については、 秘密の取得 を参照のこと。

?secret_types および ?match_all_labels オプション・パラメーターを使用して、取得したシークレットをさらにフィルターに掛けることができます。

シークレット名を使用した API でのシークレットの取得

シークレットの値は、ID の代わりに名前を参照して取得することもできます。

curl -X GET
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secret_groups/{secret_group_name}/secret_types/{secret_type}/secrets/{secert_name}"

シークレットの namesecret group name 、および secret_type を指定する必要があることに注意してください。

?secret_types および ?match_all_labels オプション・パラメーターを使用して、取得したシークレットをさらにフィルターに掛けることができます。

バイナリー・データが入っている任意のシークレットの取得

イメージなどのバイナリー・ファイルを使用して任意のシークレットを作成すると、このサービスは base64 エンコードを使用して、base64 エンコード・ストリングとしてそのデータを格納します。 元の形で秘密にアクセスするには、 base64、取り出した秘密を解読するために、さらにいくつかのステップを踏む必要がある。

まず、Secrets Manager API を呼び出して、シークレット・キーをリトリーブします。 以下の例では、cURLとjqを使用して、シークレットのpayload値を収集します。

export ARBITRARY_SECRET=`curl -X GET  
    -H "Authorization: Bearer $IAM_TOKEN" \
    -H "Accept: application/json"
"https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/arbitrary/{id}" | jq --raw-output '.payload | sub(".*,"; "")'`

$ARBITRARY_SECRETの内容を検査すると、base64エンコードされたデータが表示されます。 次のスニペットは出力例を示しています。

echo $ARBITRARY_SECRET
eUdB68klDSrzSKgWcQS5...(truncated)

元の形式 (バイナリー・ファイル) でシークレットを表示するには、base64 デコードを使用します。 以下の例では、base64macOSのユーティリティーを使用して、$ARBITRARY_SECRETのコンテンツをbase64デコードします。

echo $ARBITRARY_SECRET | base64 --decode > my-secret.png

ローカル・コンピューターから開くことができる元のバイナリー・ファイルに、データが変換されます。

前のバージョンの証明書のダウンロード

証明書をローテーションすると、Secrets Manager API を使用して、以前のバージョンにプログラムでアクセスできます。

次の要求例は、シークレットとその内容を取得します。 API を呼び出す場合は、ID 変数と IAM トークンを、ご使用の Secrets Manager インスタンス固有の値で置き換えます。

curl -X GET  
   --header "Authorization: Bearer {iam_token}" \
   --header "Accept: application/json" \
   "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets/{id}/versions/previous"