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

ユーザーの API キーの管理

フェデレーテッド・ユーザーでも非フェデレーテッド・ユーザーでも、API キーを作成し、CLI で使用したり、ご使用のユーザー ID でのログインを自動化する一環として使用したりできます。 キーのリスト表示、キーの作成、キーの更新、またはキーの削除による IBM Cloud® API キーの管理は、コンソール、CLI、または 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 キーもリスト表示して管理することができます。

表 1. 「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] と入力し、名前と説明、およびキーを保存するためのファイルを指定します。 以下の例を参照してください。
ibmcloud iam api-key-create MyKey -d "this is my API key" --file key_file

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
}'
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

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))

API キーのロック

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

UI からの API キーのロックおよびアンロック

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

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

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

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

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

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

コマンド・オプション

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

:

test-api-key という API キーをロックします。

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

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

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

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

コマンド・オプション

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

:

test-api-key という API キーをアンロックします。

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

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

ユーザー ID を表すプラットフォーム 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)
}

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)
}

開始前に

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
      

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 を使用した 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 の資料を参照してください。