IBM Cloud Docs
IAM 資格情報エンジンの構成

IAM 資格情報エンジンの構成

IAM 資格情報エンジンを構成すると、IBM Cloud® Secrets Manager サービス・インスタンスの IAM 資格情報をセットアップできます。

Secrets Managerでは、IAM資格情報エンジンがiam_credentialsシークレット・タイプのバックエンドとして機能します。 IAM 資格情報を作成する前に、サービス・インスタンスの IAM 資格情報エンジンを構成する必要があります。 IAMサービス認証 を作成するか、IBM CloudアカウントのサービスIDに関連付けられた APIキー を入力することで、インスタンスを有効にできます。

エンジン設定にAPIキーを使用する場合、生成されるアクセストークンは60分間持続し、APIキーがIAMから削除されても機能し続けます。 これは、IAM 設定でトークンの有効期限を変更することによって変更できます。 詳細はこちらをご覧ください。 API キーに関連するエンティティーが削除されると、トークンは即時に無効化されることに注意してください。

エンジン構成に IAM サービス認証を使用する場合、Secrets Manager インスタンスと同じ IBM Cloud アカウントで、他のアカウントと同様に IAM クレデンシャル・シークレットを作成および管理できます。 APIキーの設定は、Secrets Managerインスタンスが属するアカウントでのみ動作します。

開始前に

IAM資格情報エンジンを設定するには、Secrets Manager インスタンスに Manager サービス・ロール が割り当てられていることを確認してください。

API キーで IAM クレデンシャル・エンジンを構成する場合は、以下のアクセス権を持つ service ID API key が必要である:

IAM サービス認証を使用して IAM 認証エンジンを設定する場合、 Secrets Manager が以下の2つの認証ポリシーを代理で追加します。

IAM 認証情報を生成したいアカウントが特定の IP アドレスからのアクセスを許可している場合は、 Secrets Manager からの受信リクエストを許可するようにアカウントの IP アドレス設定も更新する必要があります。 詳しくは、 コンテキスト・ベースの制限によるアクセスの管理 を参照してください。

UI を使用した IAM 資格情報エンジンのセットアップ

IAMサービス認可の使用

IAM サービス認証を使用して IAM 資格情報エンジンを構成するには、以下の手順を実行します。

Secrets Manager インスタンスと同じ IBM Cloud アカウントからIAM認証情報を管理するには:

  1. **「シークレット・エンジン」ページで、「IAM 資格情報」**タブをクリックします。
  2. 「許可」 をクリックします。
  3. **「構成」**をクリックします。

別の IBM Cloud アカウントからIAM認証情報を管理するには、IAMサービス認証を手動で作成します。

IAM Identity Serviceサービス認証ポリシーの場合:

  1. IAM認証情報を管理するアカウントで、管理 >アクセス(IAM) にアクセスする。
  2. 左ペインのメニューから Authorizations を選択します。
  3. 「作成」 をクリックします。
  4. ソース]で特定のアカウントを選択し、Secrets Managerインスタンスが属するアカウントIDを指定します。
    • サービス:Secrets Manager.
    • リソース特定のリソース > サービスインスタンスと、Secrets ManagerインスタンスのサービスインスタンスIDを指定します。
  5. ターゲットで
    • サービス: IAM Identity Service
    • リソースすべて
    • 役割オペレーター

IAMアクセス・グループ・サービス・サービス認証ポリシーの場合:

  1. IAM認証情報を管理するアカウントで、管理 >アクセス(IAM) にアクセスする。
  2. 左ペインのメニューから Authorizations を選択します。
  3. 「作成」 をクリックします。
  4. ソース]で特定のアカウントを選択し、Secrets Managerインスタンスが属するアカウントIDを指定します。
    • サービス:Secrets Manager.
    • リソース特定のリソース > サービスインスタンスと、Secrets ManagerインスタンスのサービスインスタンスIDを指定します。
  5. ターゲットで
    • サービス :IAMアクセスグループサービス
    • リソースすべて
    • 役割グループ サービス メンバー管理

API キーの使用

サービス ID の API キーを使用して IAM 資格情報エンジンを構成するには、以下の手順を実行します。

  1. **「シークレット・エンジン」ページで、「IAM 資格情報」**タブをクリックします。
  2. APIキーでIAM認証エンジンを設定をクリックします。
  3. アカウント内の他の API キーを作成および管理するためのアクセス権限のある API キーを入力します。
  4. **「構成」**をクリックします。

CLI を使用した IAM 資格情報エンジンのセットアップ

IAMサービス認可の使用

IAM サービス認証を使用して IAM 資格情報エンジンを構成するには、以下の手順を実行します。

Secrets Manager インスタンスと同じ IBM Cloud アカウントからIAM認証情報を管理するには、必要なIAMサービス認可ポリシーを追加するために以下のコマンドを実行します

ibmcloud iam authorization-policy-create secrets-manager iam-identity "Service ID Creator, Operator" --source-service-instance-id SOURCE_SERVICE_INSTANCE_GUID
ibmcloud iam authorization-policy-create secrets-manager iam-groups "Groups Service Member Manage" --source-service-account SOURCE_SERVICE_INSTANCE_GUID
  • SOURCE_SERVICE_INSTANCE_GUID をSecrets Managerインスタンス・サービスIDに置き換えてください。 提供されない場合、認可はすべてのSecrets Manager インスタンスに適用されます

別の IBM Cloud アカウントからIAM認証情報を管理するには 、ACCOUNT_GUIDパラメータも指定します。

  1. IBM Cloudアカウントに、管理したいサービスIDでログインします。
  2. 以下のコマンドを実行して、必要なIAMサービス認可ポリシーを追加する:
ibmcloud iam authorization-policy-create secrets-manager iam-identity "Service ID Creator, Operator" --source-service-instance-id SOURCE_SERVICE_INSTANCE_GUID --source-service-account ACCOUNT_GUID
ibmcloud iam authorization-policy-create secrets-manager iam-groups "Groups Service Member Manage" --source-service-account SOURCE_SERVICE_INSTANCE_GUID --source-service-instance-id ACCOUNT_GUID
  • SOURCE_SERVICE_INSTANCE_GUID をSecrets Managerインスタンス・サービスIDに置き換えてください。 提供されない場合、認可はすべてのSecrets Manager インスタンスに適用されます
  • ACCOUNT_GUID を IBM Cloud アカウントIDに置き換えて、IAMクレデンシャル・シークレットを作成します。

API キーの使用

サービス ID の API キーを使用して IAM 資格情報エンジンを構成するには、以下の手順を実行します。

  1. 端末ウィンドウで、IBM Cloud CLI を使用して、IBM Cloud にログインします。

    ibmcloud login
    
  2. Secrets Manager サービス・インスタンスを作成するアカウント、リージョン、リソース・グループを選択します。

  3. サービス ID を作成し、環境変数として設定します。

    export SERVICE_ID=`ibmcloud iam service-id-create <service_ID_name> --description "<description>" --output json | jq -r ".id"`; echo $SERVICE_ID
    
  4. サービス ID に対するアクセス権限を管理します。

    サービス ID に、他のサービス ID を作成および管理するための権限を割り当てます。

    ibmcloud iam service-policy-create $SERVICE_ID --roles Operator --service-name "iam-identity"
    

    サービス ID に、アカウントのアクセス・グループを表示および更新するための権限を割り当てます。

    ibmcloud iam access-group-policy-create $SERVICE_ID --roles Editor --service-name "iam-groups"
    

    サービス ID をアカウントのアクセス・グループに追加します。

    ibmcloud iam access-group-service-id-add <access_group_name> $SERVICE_ID
    

    サービス ID 用に IBM Cloud API キーを作成します。

    export IBM_CLOUD_API_KEY=`ibmcloud iam service-api-key-create <API_key_name> $SERVICE_ID --description "<description>" --output json | jq -r ".apikey"`
    
  5. APIキーを使用して、インスタンスのIAM認証エンジンを設定します。

    IBM Cloud CLI からシークレットエンジンを設定するには、 ibmcloud secrets-manager configuration-create コマンドを実行します。

    ibmcloud secrets-manager configuration-create --configuration-prototype='{"config_type": "iam_credentials_configuration","name": "iam-configuration","api_key": "'$IBM_CLOUD_API_KEY'"}'
    

    Windows™コマンド・プロンプト(cmd.exe)またはPowerShellを使用していますか? コマンド・ラインで JSON コンテンツを渡す際にエラーが発生する場合、ご使用のオペレーティング・システムに固有の引用符のエスケープ要件に応じて、ストリングを調整する必要がある場合があります。 詳細については、IBM Cloud CLI の文字列の引用符の使用を参照してください。

APIを使用したIAM認証エンジン設定

正しいアクセス権限レベルで IBM Cloud API キーを作成するステップバイステップの指示については、UI または CLI の各ステップを参照してください。

IAMサービス認可の使用

次の例は、IAM サービス認証を使用するときに、インスタンスの IAM 資格情報エンジンを構成するために使用できるクエリを示しています。 詳しくはIBM Cloud IAMの APIドキュメント をご覧ください。

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
  "type": "authorization",
  "subjects": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$SOURCE_ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "secrets-manager"
        },
        {
          "name": "serviceInstance",
          "value": "$INSTANCE_GUID"
        }
      ]
    }
  ],
  "roles":[
        {
          "role_id": "crn:v1:bluemix:public:iam-identity::::serviceRole:ServiceIdCreator"
        },
        {
          "role_id": "crn:v1:bluemix:public:iam::::role:Operator"
        }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$TARGET_ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "iam-identity"
        }
      ]
    }
  ]
}'

curl -X POST 'https://iam.cloud.ibm.com/v1/policies' -H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' -d '{
  "type": "authorization",
  "subjects": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "$SOURCE_ACCOUNT_ID"
        },
        {
          "name": "serviceName",
          "value": "secrets-manager"
        },
        {
          "name": "serviceInstance",
          "value": "$INSTANCE_GUID"
        }
      ]
    }
  ],
  "roles":[
        {
          "role_id": "crn:v1:bluemix:public:iam-groups::::serviceRole:MemberManage"
        }
  ],
  "resources":[
    {
      "attributes": [
        {
          "name":"$TARGET_ACCOUNT_ID",
          "value": "791f5fb10986423e97aa8512f18b7e65"
        },
        {
          "name": "serviceName",
          "value": "iam-groups"
        }
      ]
    }
  ]
}'

この serviceInstance 属性は任意です。 省略された場合、認可はすべてのSecrets Managerインスタンスに適用されます。 SOURCE_ACCOOUNT_IDTARGET_ACCOUNT_IDは、現在のアカウントまたは特定のアカウントの権限を作成する際に必要です。

API キーの使用

次の例は、API キーを使用してインスタンスの IAM 認証情報エンジンを設定するために使用できるクエリを示しています。 API を呼び出す場合は、API キー変数と IAM トークンを、ご使用の Secrets Manager インスタンス固有の値で置き換えます。

curl -X POST
  --H "Authorization: Bearer {iam_token}" \
  --H "Accept: application/json" \
  --H "Content-Type: application/json" \
  --d '{
    "api_key": "{iam_apikey}", "config_type": "iam_credentials_configuration",
    "name": "iam-configuration"
    }' \
  "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/configurations"

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

Terraform を使用した IAM 資格情報エンジンの構成

IAMサービス認可の使用

次の例は、IAM サービス認証を使用する場合に、Secrets Managerインスタンスの IAM クレデンシャル・エンジンを構成するために使用できるクエリを示しています。

    resource "ibm_iam_authorization_policy" "sm_to_iam_identity" {
        source_service_name = "secrets-manager"
        source_service_account = local.source_account_id
        source_resource_instance_id = local.instance_id
        target_service_name = "iam-identity"
        roles = ["Service ID creator", "Operator"]
    }

    resource "ibm_iam_authorization_policy" "sm_to_iam_groups" {
        source_service_name = "secrets-manager"
        source_service_account = local.source_account_id
        source_resource_instance_id = local.instance_id
        target_service_name = "iam-groups"
        roles = ["Groups Service Member Manage"]
    }

source_resource_instance_id属性はオプションです。 省略された場合、認可はすべてのSecrets Managerインスタンスに適用されます。 source_service_account 属性はオプションです。 ソース口座が現在の口座と同じ場合は省略できる。

API キーの使用

正しいアクセス権限レベルで IBM Cloud API キーを作成するステップバイステップの指示については、UI または CLI の各ステップを参照してください。

次の例は、サービス ID の API キーを使用して IAM クレデンシャル・エンジンを構成するために使用できる設定です。

    resource "ibm_sm_iam_credentials_configuration" "iam_credentials_configuration" {
        instance_id = local.instance_id
        region = local.region
        name = "iam_credentials_config"
        api_key = var.ibmcloud_api_key
    }

UI で IAM クレデンシャルエンジンの設定値を取得する

Secrets Manager UI を使用して、エンジンの構成を取得できます。 構成の取得は、APIキーを使用してIAM認証エンジンを設定する場合のみ有効です。

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

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

CLI を使用したエンジンの構成値の取得

Secrets Manager CLI を使用して、エンジンの構成を取得できます。 以下のコマンド例では、エンジン構成名をご使用の構成の名前に置き換えます。 構成の取得は、APIキーを使用してIAM認証エンジンを設定する場合のみ有効です。

ibmcloud secrets-manager configuration --name EXAMPLE_CONFIG --service-url https://{instance_ID}.{region}.secrets-manager.appdomain.cloud

{instance_ID}{region} を、ご使用の Secrets Manager サービス・インスタンスに適用される値に置き換えます。 インスタンス固有のエンドポイント URL を見つけるには、Secrets Manager UI の 「エンドポイント」 ページからエンドポイント URL をコピーします。 詳細については、エンドポイント URL の表示を参照してください。

API を使用したエンジンの構成値の取得

Secrets Manager API を使用して、エンジンの構成を取得できます。 以下の要求例では、エンジン構成名をご使用の構成の名前に置き換えてください。 構成の取得は、APIキーを使用してIAM認証エンジンを設定する場合のみ有効です。

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

{instance_ID}{region} を、ご使用の Secrets Manager サービス・インスタンスに適用される値に置き換えます。 インスタンス固有のエンドポイント URL を見つけるには、Secrets Manager UI の 「エンドポイント」 ページからエンドポイント URL をコピーします。 詳細については、エンドポイント URL の表示を参照してください。

正常な応答は、エンジン構成の値を他のメタデータとともに返します。 必須およびオプションのリクエストパラメータの詳細については 、「設定の取得」 を参照してください。

次のステップ

これでSecrets Managerを使ってIAMクレデンシャルを生成できるようになりました。 Secrets Manager UI で、「シークレット」 > 「追加」 > 「IAM 資格情報」 をクリックして、シークレットの作成を開始します。