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 ID サービスのオペレーター・プラットフォーム・ロール。
- IAM Identity Serviceに対する サービス ID 作成者 のサービス役割。 サービス ID 作成者サービス役割は、IAM 設定でサービス ID の作成を無効にした場合にのみ必要です。
IAM サービス認証を使用して IAM 認証エンジンを設定する場合、 Secrets Manager が以下の2つの認証ポリシーを代理で追加します。
- グループ・サービス・メンバー管理 IAMアクセス・グループ・サービス・サービスのプラットフォーム・ロール。
- IAM Identity Serviceサービスの オペレータプラットフォームの役割。
- IAM Identity Serviceに対する サービス ID 作成者 のサービス役割。 サービス ID 作成者サービス役割は、IAM 設定でサービス ID の作成を無効にした場合にのみ必要です。
IAM 認証情報を生成するアカウント特定の IP アドレスからのアクセスを許可している場合は、 Secrets Manager からの受信リクエストを許可するように、 アカウント IP アドレス設定も更新する必要があります。 詳しくは、 コンテキスト・ベースの制限によるアクセスの管理 を参照してください。
UI を使用した IAM 資格情報エンジンのセットアップ
IAMサービス認可の使用
IAM サービス認証を使用して IAM 資格情報エンジンを構成するには、以下の手順を実行します。
Secrets Manager インスタンスと同じ IBM Cloud アカウントからIAM認証情報を管理するには:
- **「シークレット・エンジン」ページで、「IAM 資格情報」**タブをクリックします。
- 「許可」 をクリックします。
- **「構成」**をクリックします。
別の IBM Cloud アカウントからIAM認証情報を管理するには、IAMサービス認証を手動で作成します。
IAM Identity Serviceサービス認証ポリシーの場合:
- IAM認証情報を管理するアカウントで、管理 >アクセス(IAM) にアクセスする。
- 左ペインのメニューから Authorizations を選択します。
- 「作成」 をクリックします。
- ソース]で特定のアカウントを選択し、Secrets Managerインスタンスが属するアカウントIDを指定します。
- サービス:Secrets Manager.
- リソース Specific resources] > [Service instance] で、 Secrets Manager インスタンスのサービスインスタンス ID を指定します。
- ターゲットで
- サービス IAM Identity Service
- リソースすべて
- 役割オペレーター
IAMアクセス・グループ・サービス・サービス認証ポリシーの場合:
- IAM認証情報を管理するアカウントで、管理 >アクセス(IAM) にアクセスする。
- 左ペインのメニューから Authorizations を選択します。
- 「作成」 をクリックします。
- ソース]で特定のアカウントを選択し、Secrets Managerインスタンスが属するアカウントIDを指定します。
- サービス:Secrets Manager.
- リソース Specific resources] > [Service instance] で、 Secrets Manager インスタンスのサービスインスタンス ID を指定します。
- ターゲットで
- サービス IAMアクセス・グループ・サービス
- リソースすべて
- 役割グループ サービス メンバー管理
API キーの使用
サービス ID の API キーを使用して IAM 資格情報エンジンを構成するには、以下の手順を実行します。
- **「シークレット・エンジン」ページで、「IAM 資格情報」**タブをクリックします。
- Configure IAM credentials engine with API key ] をクリックします。
- アカウント内の他の API キーを作成および管理するためのアクセス権限のある API キーを入力します。
- **「構成」**をクリックします。
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パラメータも指定します。
- IBM Cloudアカウントに、管理したいサービスIDでログインします。
- 以下のコマンドを実行して、必要な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 資格情報エンジンを構成するには、以下の手順を実行します。
-
端末ウィンドウで、IBM Cloud CLI を使用して、IBM Cloud にログインします。
ibmcloud login -
Secrets Manager サービス・インスタンスを作成するアカウント、リージョン、リソース・グループを選択します。
-
サービス ID を作成し、環境変数として設定します。
export SERVICE_ID=`ibmcloud iam service-id-create <service_ID_name> --description "<description>" --output json | jq -r ".id"`; echo $SERVICE_ID -
サービス 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"` -
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_ID と TARGET_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
}
Secrets Manager IAM Engine を使用して、IAM 資格情報エンジンをプログラムで構成します。 設定例については Terraform IBM Modules を参照のこと。
UI で IAM クレデンシャルエンジンの設定値を取得する
Secrets Manager UI を使用して、エンジンの構成を取得できます。 構成の取得は、APIキーを使用してIAM認証エンジンを設定する場合のみ有効です。
- IAM 資格情報 シークレット・エンジンで、 「アクション」 メニュー
をクリックして、エンジン構成のオプションのリストを開きます。
- 構成値を表示するには、 「構成の表示」 をクリックします。
- 安全な環境にいることを確認したら、 「確認」 をクリックします。
シークレットの値が 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 の表示を参照してください。
レスポンスに成功すると、他のメタデータとともにエンジン・コンフィギュレーションの値が返される。 必須およびオプションのリクエスト・パラメータの詳細については、 Get configurationを参照のこと。
次のステップ
これでSecrets Managerを使ってIAMクレデンシャルを生成できるようになりました。 Secrets Manager UI で、「シークレット」 > 「追加」 > 「IAM 資格情報」 をクリックして、シークレットの作成を開始します。
- IAM 資格情報の作成
- Secrets Manager IAM Engine モジュールを使用して Secrets Manager IAM エンジンのセットアップを自動化する。