IBM Cloud Docs
ユーザーの API キーの管理

ユーザーの API キーの管理

フェデレーションユーザーまたは非フェデレーションユーザーは、CLIで使用したり、自動化の一部としてユーザーアイデンティティとしてログインするために、APIキーを作成することができます。 コンソール、CLI、またはAPIを使用して、 IBM Cloud® APIキーを管理することができます。キーの一覧表示、キーの作成、キーの更新、キーの削除が可能です。

API キーは、作成対象のユーザー ID に割り当てられているすべてのアクセス権限を継承し、アクセス権限は API キーが作成されたアカウントには限定されません。これは、対象ユーザーに割り当てられているすべてのポリシーからアクセス権限が継承されるためです。 したがって、ユーザーが複数のアカウントのリソースに対するアクセス権限を持つ場合、API キーはすべてのアカウントのアクセス権限を継承します。 そのため、ユーザーの API キーを使用してトークンを生成したり、API キーが作成されたアカウントの外部にある、ユーザーがアクセス権限を持つリソースにアクセスしたりできます。

お客様のユーザーIDに関連付けられているAPIキーは、お客様がメンバーとなっているすべてのアカウントで、お客様が権利を有するすべてのアクセス権限を有しています。 このため、APIキーの使用方法には十分注意する必要があります。 例えば、IBM Cloud サービスをユーザーのために機能させたり、IAM 対応ではないサービスにアクセスさせたりする必要がある場合、そのサービスでユーザー API キーが必要にあることがあります。 このような場合は、サービスを利用するために必要な最低限のアクセス権限が割り当てられた機能IDに関連付けられたAPIキーを作成します。

機能 ID は、プログラム、アプリケーション、サービスを表わすために作成されるユーザー ID です。 機能 ID をアカウントに招待して、特定のリソースやアプリケーションとの対話など、特定の目的に限定したアクセス権限を割り当てることができます。 機能 ID には、その ID が作成された特定の機能に必要な、単一アカウント内の最小レベルのアクセス権限のみを付与する必要があります。

トラステッド・プロファイルを適用している場合、ユーザー API キーを作成することはできません。 とはいえ、他のすべての API キーは作成して管理することができます。 例えば、サービス ID API キーなどがあります。 詳しくは、 IAMに関するFAQ をご覧ください。

ユーザーの API キーの管理

自分のユーザー ID に関連付けられている IBM Cloud API キー、またはアカウント内の他のユーザーのために管理するためのアクセス権限を持っている API キーを管理するには、IBM Cloud コンソールで管理 > アクセス (IAM) > API キーに移動します。 APIキーのページでは、ご自身用の IBM Cloud APIキーを作成、編集、または削除することができます。 また、ユーザー階層であなたの上位ユーザーであるユーザーのすべての クラシックインフラストラクチャAPIキー を管理することもできます。 さらに、アカウント所有者であるか、または、アカウントの他のユーザーの API キーを管理するために必要なアクセス権限を割り当てられたユーザーである場合は、**「表示」**フィルターを使用して、それらの API キーもリスト表示して管理することができます。

APIキーページでのAPIキー管理に必要なアクセス
フィルター・オプション 表示される API キー 必要なアクセス権限 許可されるアクション
自分の IBM Cloud API キー 自分の IBM Cloud API キー アクセス権限不要 表示、作成、編集、削除
すべてのユーザーの IBM Cloud API キー アカウントのすべてのユーザーによって作成されたすべての All IBM Cloud API キー IAM Identity サービスに対する管理者役割 表示、編集、および削除

コンソールでの API キーの作成

IBM Cloud ユーザーは、プログラムまたはスクリプトを使用可能にする際、パスワードをスクリプトに配布せずに、API キーを使用できます。 API キーを使用する利点は、ユーザーまたは組織がさまざまなプログラムに対して複数の API キーを作成できることです。 API キーは、侵害された場合、他の API キーやユーザーに干渉することなく、個別に削除できます。 最大 20 個の API キーを作成できます。

UI でユーザー ID の API キーを作成するには、以下の手順を実行します。

  1. IBM Cloud コンソールで**「管理」** > 「アクセス (IAM)」 > **「API キー」**に移動します。
  2. **「IBM Cloud API キーの作成」**をクリックします。
  3. API キーの名前と説明を入力します。
  4. 「作成」 をクリックします。
  5. 次に、**「表示」をクリックして API キーを表示します。 または、「コピー」をクリックして後で使用するためにコピーして保存するか、または「ダウンロード」**をクリックします。

安全上の理由により、API キーをコピーまたはダウンロードできるのは作成時のみになります。 API キーを紛失した場合は、新しい API キーを作成する必要があります。

CLI を使用した API キーの作成

CLI を使用して API キーを作成するには、以下のコマンドを使用します。

  1. ibmcloud iam api-key-create NAME [-d DESCRIPTION] [-f, --file FILE] [--action-if-leaked VALUE] を入力し、鍵を保存するための名前、説明、ファイルを指定します。 以下の例を参照してください。
ibmcloud iam api-key-create MyKey -d "this is my API key" --file key_file --action-if-leaked "DELETE"

--action-if-leaked については、「NONE」、「DISABLE」、または「DELETE」が有効な値です。 デフォルトの動作は「DISABLE」です。

  • 無効 :キーを無効にすると、認証およびサービスへのアクセス機能が直ちにブロックされます。 必要であれば、後でキーを再度有効にすることができます。
  • 削除 :APIキーはアカウントから恒久的に削除され、認証に使用できなくなります。 この操作は元に戻せません。
  • NONE: キーは有効なままなので、リソースへのアクセスに使用できます。

API を使用した API キーの作成

APIキーを作成するには、次の例のように IAM Identity Service APIを呼び出します

curl -X POST 'https://iam.cloud.ibm.com/v1/apikeys' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json' -d '{
  "name": "My-apikey",
  "description": "my personal key",
  "iam_id": "IBMid-123WEREW",
  "account_id": "ACCOUNT_ID"
  "store_value": false
  "action_when_leaked": "delete"
  "support_sessions": false
}'
CreateApiKeyOptions createApiKeyOptions = new CreateApiKeyOptions.Builder()
    .name(apiKeyName)
    .iamId(iamId)
    .description("Example ApiKey")
    .build();

Response<ApiKey> response = service.createApiKey(createApiKeyOptions).execute();
ApiKey apiKey = response.getResult();
apikeyId = apiKey.getId();
System.out.println(apiKey.toString());
const params = {
  name: apikeyName,
  iamId: iamId,
  description: 'Example ApiKey',
};

iamIdentityService.createApiKey(params)
  .then(res => {
    apikeyId = res.result.id
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
api_key = iam_identity_service.create_api_key(
  name=apikey_name,
  iam_id=iam_id
).get_result()

apikey_id = api_key['id']

print(json.dumps(api_key, indent=2))
createAPIKeyOptions := iamIdentityService.NewCreateAPIKeyOptions(apikeyName, iamID)
createAPIKeyOptions.SetDescription("Example ApiKey")

apiKey, response, err := iamIdentityService.CreateAPIKey(createAPIKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(apiKey, "", "  ")
fmt.Println(string(b))
apikeyID = *apiKey.ID

action_when_leaked については、「なし」、「無効」、「削除」のいずれかの値が指定できます。 デフォルトの動作は「無効」です。

  • 無効 :キーを無効にすると、認証およびサービスへのアクセスが直ちにブロックされます。 必要であれば、後でキーを再度有効にすることができます。
  • 削除 :APIキーはアカウントから恒久的に削除され、認証に使用できなくなります。 この操作は元に戻せません。
  • none: キーは有効なままなので、リソースへのアクセスに使用できます。

support_sessions に対して、API キーの CLI ログインセッションを管理できるかどうかを定義します

  • true: このAPIキーのログインセッションを作成します。セッションの確認や取り消しにより管理できます。 詳細については 、「ログインセッションの監視」 を参照してください。
  • 誤り :セッションは作成も追跡もされない。 ログインを無効化または確認することはできず、アクセスをブロックするにはAPIキー自体を削除または変更する必要があります。

開始前に

Terraformを使用してユーザーAPIキーを管理する前に、以下の手順を完了していることを確認してください

  • Terraform CLI をインストールし、Terraform 用の IBM Cloud プロバイダー・プラグインを構成します。 詳しくは、 IBM Cloud® のチュートリアルを参照してください。 このプラグインは、以下のタスクを実行するために使用される IBM Cloud API を抽象化します。
  • main.tfという名前の Terraform 構成ファイルを作成します。 このファイルでは、 HashiCorp 構成言語を使用してリソースを定義します。 詳細については 、Terraformのドキュメントを参照してください。

Terraformを使用してAPIキーを作成する

Terraform を使用してアクセス・グループを作成するには、以下の手順を実行します。

  1. main.tf ファイルに引数を作成します。 次の例では、 ibm_iam_api_key リソースを使用してアクセスグループを作成します。 name は、APIキーを識別するための一意の名前です。

    resource "ibm_iam_api_key" "iam_api_key" {
     name        = "test1234"
    }
    

    description プロパティーは、API キーの作成中に説明が指定された場合にのみ使用できます。 詳細については 、Terraform Identity and Access Management(IAM)ページの引数リファレンスの詳細を参照してください。

  2. 構成ファイルの作成が完了したら、Terraform CLI を初期化します。 詳しくは、 作業ディレクトリーの初期化を参照してください。

    terraform init
    
  3. main.tf ファイルからリソースをプロビジョンします。 詳しくは、 Terraform を使用したインフラストラクチャーのプロビジョニングを参照してください。

    1. terraform plan を実行して、提案されたアクションをプレビューするための Terraform 実行プランを生成します。

      terraform plan
      
    2. terraform apply を実行して、計画に定義されているリソースを作成します。

      terraform apply
      

コンソールでAPIキーを更新する

API キーの名前や説明を変更する場合は、UI または CLI で以下の手順を実行します。

API キーを編集するには、以下の手順を実行します。

  1. IBM Cloud コンソールで**「管理」** > 「アクセス (IAM)」 > **「API キー」**に移動します。
  2. 更新したい API キーの行を識別し、アクション・アイコンアクション・アイコン > 編集をクリックします。
  3. API キーの情報を更新します。
  4. **「適用」**をクリックします。

自分のものではないが管理できる API キーを編集するには、「API キー」ページに移動します。 次に、**「表示」メニューから「すべてのユーザーの IBM Cloud API キー」**オプションを選択して対象の API キーを見つけます。

CLIを使用してAPIキーを更新する

CLI を使用して API キーを編集するには、以下のコマンドを入力します。

  1. ibmcloud iam api-key-update NAME [-n NAME] [-d DESCRIPTION] と入力し、キーの旧名、新名、新説明を指定します。 詳細は、以下の例を参照してください
ibmcloud iam api-key-update MyCurrentName -n MyNewName -d "the new description of my key"

API を使用した API キーの更新

APIを使用してAPIキーを編集するには、次の例のように IAM Identity Service APIを呼び出します

curl -X PUT 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID' -H 'Authorization: Bearer TOKEN' -H 'If-Match: <value of etag header from GET request>' -H 'Content-Type: application/json' -d '{
  "name": "My-apikey",
  "description": "my personal key"
}'
UpdateApiKeyOptions updateApiKeyOptions = new UpdateApiKeyOptions.Builder()
    .id(apikeyId)
    .ifMatch(apikeyEtag)
    .description("This is an updated description")
    .build();

Response<ApiKey> response = service.updateApiKey(updateApiKeyOptions).execute();
ApiKey apiKey = response.getResult();
System.out.println(apiKey.toString());
const params = {
  id: apikeyId,
  ifMatch: apikeyEtag,
  description: 'This is an updated description',
};

iamIdentityService.updateApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
api_key = iam_identity_service.update_api_key(
  id=apikey_id,
  if_match=apikey_etag,
  description='This is an updated description'
).get_result()

print(json.dumps(api_key, indent=2))
updateAPIKeyOptions := iamIdentityService.NewUpdateAPIKeyOptions(apikeyID, apikeyEtag)
updateAPIKeyOptions.SetDescription("This is an updated description")

apiKey, response, err := iamIdentityService.UpdateAPIKey(updateAPIKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(apiKey, "", "  ")
fmt.Println(string(b))

Terraform を使用した API キーの更新

Terraform を使用して API キーを更新するには、以下の手順を使用します。

  1. Terraform構成の main.tf ファイルで、 iam_api_key を作成するために使用したTerraformコードを見つけます。

  2. 以下の例では、 ibm_iam_api_key リソースを使用して API キーを更新します。ここで、 name は API キーを識別する固有の名前です。

    resource "ibm_iam_api_key" "iam_api_key" {
     name        = "test1234"
     description = "API key for users"
    }
    

    description プロパティーは、API キーの作成中に説明が指定された場合にのみ使用できます。 詳細については 、Terraform Identity and Access Management(IAM)ページの引数リファレンスの詳細を参照してください。

  3. main.tf ファイルからリソースをプロビジョンします。 詳しくは、 Terraform を使用したインフラストラクチャーのプロビジョニングを参照してください。

    1. terraform plan を実行して、提案されたアクションをプレビューするための Terraform 実行プランを生成します。

      terraform plan
      
    2. terraform apply を実行して、計画に定義されているリソースを作成します。

      terraform apply
      

詳しくは、Terraform の資料を参照してください。

コンソールでのAPIキーのロックとロック解除

ユーザー ID を表すプラットフォーム API キーの場合、API キーをロックすることにより削除されないようにすることができます。 ロックされたAPIキーには、 ロックアイコンが表示されます 。ロックアイコン

  1. IBM Cloud コンソールで**「管理」** > 「アクセス (IAM)」 > **「API キー」**に移動します。
  2. ロックしたい API キーの行を識別し、アクション・アイコンアクション・アイコン > ロックをクリックします。

API キーを更新したりアカウントから削除したりするために、API キーをいつでもアンロックできます。 アンロックする API キーを表から選択し、アクション・アイコン アクション・アイコン > アンロックをクリックします。

CLI を使用した API キーのロックおよびアンロック

ユーザー ID を表すプラットフォーム API キーの場合、API キーをロックすることにより削除されないようにすることができます。 API キーをロックするには、以下のコマンドを使用します。

ibmcloud iam api-key-lock (NAME|UUID) [-f, --force]

前提条件: エンドポイント、ログイン

コマンド・オプション

NAME (必須)
ロックするAPIキーの名前。UUIDと排他的。
UUID (必須)
ロックするAPIキーのUUID。NAMEと一意であること。
-f, --force
確認なしでロックを強制します。

:

API キーのロック test-api-key

ibmcloud iam api-key-lock test-api-key

API キーをアンロックするには、以下のコマンドを実行します。

ibmcloud iam api-key-unlock (NAME|UUID) [-f, --force]

前提条件: エンドポイント、ログイン

コマンド・オプション

NAME (必須)
アンロックする API キーの名前。UUID と同時に指定することはできません。
UUID (必須)
アンロックする API キーの UUID。NAME と同時に指定することはできません。
-f, --force
確認なしでアンロックを強制します。

:

API キーのロック解除 test-api-key

ibmcloud iam api-key-unlock test-api-key

API を使用した API キーのロックおよびアンロック

ユーザー ID を表すプラットフォーム API キーの場合、API キーをロックすることにより削除されないようにすることができます。

APIを使用してAPIキーをロックする

APIを使用してAPIキーをロックするには、次の例のように IAM Identity Service APIを呼び出します

curl -X POST 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
LockApiKeyOptions lockApiKeyOptions = new LockApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.lockApiKey(lockApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.lockApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
lock_api_key(self,
        id: str,
        **kwargs
    ) -> DetailedResponse

response = iam_identity_service.lock_api_key(id=apikey_id)

print(response)
lockAPIKeyOptions := iamIdentityService.NewLockAPIKeyOptions(apikeyID)

response, err := iamIdentityService.LockAPIKey(lockAPIKeyOptions)
if err != nil {
  panic(err)
}

API キーのアンロック

APIを使用してAPIキーのロックを解除するには、次の例のように IAM Identity Service APIを呼び出します

curl -X DELETE 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
UnlockApiKeyOptions unlockApiKeyOptions = new UnlockApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.unlockApiKey(unlockApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.unlockApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
response = iam_identity_service.unlock_api_key(id=apikey_id)

print(response)
unlockAPIKeyOptions := iamIdentityService.NewUnlockAPIKeyOptions(apikeyID)

response, err := iamIdentityService.UnlockAPIKey(unlockAPIKeyOptions)
if err != nil {
  panic(err)
}

Terraformを使用してAPIキーのロックとロック解除を行う

ユーザー ID を表すプラットフォーム API キーの場合、API キーをロックすることにより削除されないようにすることができます。

Terraform を使用した API キーのロック

Terraform を使用して API キーをロックするには、以下の手順を使用します。

  1. Terraform構成の main.tf ファイルで、 iam_api_key を作成するために使用したTerraformコードを見つけます。

  2. 以下の例では、 ibm_iam_api_key リソースを使用して API キーを更新します。ここで entity_lock は、以降の書き込み操作のために API キーがロックされているかどうかを示します。 デフォルト値はfalseです。

    resource "ibm_iam_api_key" "iam_api_key" {
     entity_lock        = "true"
    }
    
  3. main.tf ファイルからリソースをプロビジョンします。 詳しくは、 Terraform を使用したインフラストラクチャーのプロビジョニングを参照してください。

    1. terraform plan を実行して、提案されたアクションをプレビューするための Terraform 実行プランを生成します。

      terraform plan
      
    2. terraform apply を実行して、計画に定義されているリソースを作成します。

      terraform apply
      

詳しくは、Terraform の資料を参照してください。

API キーの削除

キーのローテーション戦略を使用している場合は、古いキーを削除し、新しいキーに置き換えることができます。

API キーを削除するには、以下の手順を実行します。

  1. IBM Cloud コンソールで**「管理」** > 「アクセス (IAM)」 > **「API キー」**に移動します。
  2. 削除したい API キーの行を特定し、 行動 アイコンをクリックします。 アクションアイコン > 削除
  3. 次に、**「削除」**をクリックして、削除を確認します。

自分のものではないが管理できる API キーを削除するには、「API キー」ページに移動します。 次に、**「表示」メニューから「すべてのユーザーの IBM Cloud API キー」**オプションを選択して対象の API キーを見つけます。

CLI を使用した API キーの削除

CLI を使用して API キーを削除するには、以下の手順を実行します。

ibmcloud iam api-key-delete NAME と入力し、削除するキーの名前を指定します。

API を使用した API キーの削除

APIを使用してAPIキーを削除するには、次の例のように IAM Identity Service APIを呼び出します

curl -X DELETE 'https://iam.cloud.ibm.com/v1/apikeys/APIKEY_UNIQUE_ID' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
DeleteApiKeyOptions deleteApiKeyOptions = new DeleteApiKeyOptions.Builder()
    .id(apikeyId)
    .build();

service.deleteApiKey(deleteApiKeyOptions).execute();
const params = {
  id: apikeyId,
};

iamIdentityService.deleteApiKey(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
  });
delete_api_key(self,
        id: str,
        **kwargs
    ) -> DetailedResponse

response = iam_identity_service.delete_api_key(id=apikey_id)

print(response)
deleteAPIKeyOptions := iamIdentityService.NewDeleteAPIKeyOptions(apikeyID)

response, err := iamIdentityService.DeleteAPIKey(deleteAPIKeyOptions)
if err != nil {
  panic(err)
}