IBM Cloud Docs
サービス ID の API キーの管理

サービス ID の API キーの管理

サービス ID は、IBM Cloud® の内部および外部の両方でホストされているアプリケーションによる IBM Cloud サービスへのアクセスを可能にするために作成されます。 API キーは、特定のサービス ID としてアプリケーションを認証し、その特定のサービス ID に関連付けられたアクセス権限をアプリケーションに付与するために使用されます。

サービス ID を作成したら、API キーの作成とサービス・ポリシーの割り当てを開始できます。 各ポリシーは、サービスでの認証に API キーが使用された時に許可されるアクセス・レベルを指定します。 サービス ID の作成およびポリシーの割り当てについて詳しくは、『サービス ID の作成と処理』を参照してください。 サービス ID の API キーの管理に使用される CLI コマンドの詳細については、『 IAM アクセス権限、API キー、サービス ID、およびアクセス・グループの管理』を参照してください。

サービス ID に関連付けられている各 API キーは、そのサービス ID に割り当てられているポリシーを継承します。 例えば、あるアプリケーションで、特定のサービスのリソースを表示するには、ビューアー役割を割り当てたポリシーを適用したサービス ID に関連付けられている API キーを使用する必要があります。 別のアプリケーションでは、サービス内でフルアクセスを持てるようにしたい場合は、管理者役割が割り当てられたポリシーを持つ 2 番目のサービス ID に関連付けられた API キーを使用する必要があります。

サービスIDの使用方法の例については、 Object Storage のドキュメント 「HMAC 認証情報の使用 」または、 IBM Cloud Data Engine の動画 「 IBM Cloud Data Engine REST API の使用方法 」をご覧ください。

サービス ID の API キーを管理するために必要なアクセス権限

すべてのユーザーがアカウントでサービス ID を作成できます。また、ID の作成者は ID の管理者であり、関連付けられた API キーとアクセス・ポリシーを作成できます。 ただし、アカウント所有者および IAM Identity サービスに対する管理者役割を割り当てられたユーザーは、アカウントのすべてのサービス ID の API キーを管理できます。 また、単一のサービス ID に対するアクセス権限のみをユーザーに付与することもできます。そのためには、管理者がアクセス権限を割り当てるときにサービス ID を指定します。

必要なアクセス権限を持つユーザーは、アカウントのすべてのサービス ID の API キーを表示、更新、削除できます。 **「API キー」ページに移動し、「表示」メニューの「すべてのサービス ID API キー」**オプションを選択して、詳細表示、更新、または削除を行う API キーを見つけます。

サービス ID 用の API キーの作成

サービス ID に関連付ける API キーをコンソールで作成するには、次のようにします。

  1. IBM Cloud コンソールで**「管理」** > **「アクセス (IAM)」と移動し、「サービス ID」**を選択します。
  2. サービス ID を作成していない場合は、サービス ID を作成します。
  3. アクション・アイコンアクション・アイコン > サービス ID の管理をクリックします。
  4. **「API キー」**をクリックします。
  5. 「作成」 をクリックします。
  6. API キーを容易に識別するための名前と説明を追加します。
  7. 「作成」 をクリックします。
  8. API キーを安全な場所にコピーまたはダウンロードして保存します。

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

コンソールを使用してサービスIDのAPIキーを更新する

API キーの更新は、UI で API キーを識別するために使用される名前または説明を編集することによって実行できます。

  1. IBM Cloud コンソールで**「管理」** > **「アクセス (IAM)」と移動し、「サービス ID」**を選択します。
  2. アクション・アイコンアクション・アイコン > サービス ID の管理をクリックします。
  3. **「API キー」**をクリックします。
  4. アクション・アイコンアクション・アイコン > 名前の編集 & 説明をクリックします。

サービス ID の作成者でなくても、アカウント所有者または IAM Identity サービスの管理者である場合は、アカウントのすべてのサービス ID の API キーを更新できます。 **「API キー」ページに移動し、「表示」メニューの「すべてのサービス ID API キー」**オプションを選択して、操作する API キーを見つけます。

CLI を使用したサービス ID 用の API キーの作成

CLI を使用してサービス ID の API キーを作成するには、ibmcloud iam service-api-key-create コマンドを使用します。

ibmcloud iam service-api-key-create NAME (SERVICE_ID_NAME|SERVICE_ID_UUID) [-d, --description DESCRIPTION] [--file FILE] [-f, --force] [--lock]

CLI を使用したサービス ID の API キーの更新

CLI を使用してサービス ID の API キーを更新するには、ibmcloud iam service-api-key-update コマンドを使用します。

ibmcloud iam service-api-key-update NAME SERVICE_ID [-n, --name NEW_sNAME] [-d, --description DESCRIPTION] [-v, --version VERSION] [-f, --force]

サービス ID の API キーのロック

サービス ID のアイデンティティーを表す API キーの場合、API キーをロックすることにより削除されないようにすることができます。 ロックされた API キーは、UI のロック済みアイコンロック済みアイコンで示されます。

  1. IBM Cloud コンソールで**「管理」** > **「アクセス (IAM)」をクリックし、「サービス ID」**を選択します。
  2. API キーの選択対象サービス ID の行を特定し、サービス ID の名前を選択します。
  3. **「API キー」**をクリックします。
  4. ロックする API キーの行の上にカーソルを移動し、アクション・アイコンアクション・アイコンをクリックしてオプションのリストを開きます。
  5. **「API キーのロック (Lock API key)」**をクリックします。

アクセス・ポリシーを更新、削除、または追加したり、API キーを削除したりするために、API キーはいつでもアンロックできます。

CLI を使用したサービス ID の API キーのロックまたはアンロック

サービス ID のアイデンティティーを表す API キーの場合、API キーをロックすることにより削除されないようにすることができます。 ロックされた API キーは、UI のロック済みアイコンロック済みアイコンで示されます。 サービス ID の API キーをロックするには、以下のコマンドを使用します。

ibmcloud iam service-api-key-lock (APIKEY_NAME|APIKEY_UUID) (SERVICE_ID_NAME|SERVICE_ID_UUID) [-f, --force]
前提条件
エンドポイント、ログイン、ターゲット

コマンド・オプション

APIKEY_NAME (必須)
API キーの名前。APIKEY_UUID と同時に指定することはできません。
APIKEY_UUID (必須)
API キーの UUID。APIKEY_NAME と同時に指定することはできません。
SERVICE_ID_NAME (必須)
サービス ID の名前。SERVICE_ID_UUID と同時に指定することはできません。
SERVICE_ID_UUID (必須)
サービス ID の UUID。SERVICE_ID_NAME と同時に指定することはできません。
-f, --force
確認を求めずにロックします

:

サービス ID sample-key のサービス API キー sample-service をロックします

ibmcloud iam service-api-key-lock sample-key sample-service

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

ibmcloud iam service-api-key-unlock (APIKEY_NAME|APIKEY_UUID) (SERVICE_ID_NAME|SERVICE_ID_UUID) [-f, --force]

サービス ID 用の API キーの削除

サービス ID に関連付けられている API キーを削除することができます。 しかし、アプリケーションによって使用されている API キーを削除すると、サービスでそのアプリケーションの認証を行えなくなります。

  1. IBM Cloud コンソールで**「管理」** > **「アクセス (IAM)」と移動し、「サービス ID」**を選択します。
  2. サービス ID を作成していない場合は、サービス ID を作成します。
  3. アクション・アイコンアクション・アイコン > サービス ID の管理をクリックします。
  4. **「API キー」**をクリックします。
  5. アクション・アイコンアクション・アイコン > 削除をクリックします。

サービス ID の作成者でなくても、アカウント所有者または IAM Identity サービスの管理者である場合は、アカウントのすべてのサービス ID の API キーを削除できます。 **「API キー」ページに移動し、「表示」メニューの「すべてのサービス ID API キー」**オプションを選択して、操作する API キーを見つけます。

CLI を使用したサービス ID 用の API キーの削除

サービス ID に関連付けられている API キーを削除することができます。 しかし、アプリケーションによって使用されている API キーを削除すると、サービスでそのアプリケーションの認証を行えなくなります。 CLI を使用してサービス ID の API キーを削除するには、ibmcloud iam service-api-key-delete コマンドを使用します。

ibmcloud iam service-api-key-delete NAME SERVICE_ID [-f, --force]

API を使用したサービス ID 用の API キーの作成

サービスID 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": "Service-apikey",
  "description": "my service 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 を使用したサービス ID 用の API キーの更新

APIを使用してサービスIDの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": "Service-apikey",
  "description": "my service 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 キーのロックおよびアンロック

サービス ID のアイデンティティーを表す API キーの場合、API キーをロックすることにより削除されないようにすることができます。

API キーのロック

APIを使用してサービスIDの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);
  });
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を使用してサービスIDのAPIキーを解除するには、次の例のように IAM Identity Service APIを呼び出します

curl -X DELETE 'https://iam.cloud.ibm.com/v1/serviceids/SERVICE_ID_UNIQUE_ID/lock' -H 'Authorization: Bearer TOKEN' -H 'Content-Type: application/json'
UnlockServiceIdOptions unlockServiceIdOptions = new UnlockServiceIdOptions.Builder()
    .id(svcId)
    .build();

service.unlockServiceId(unlockServiceIdOptions).execute();
const params = {
  id: svcId,
};

iamIdentityService.unlockServiceId(params)
  .then(res => {
    console.log(JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err);
    done(err);
  });
response = iam_identity_service.unlock_service_id(id=svc_id)

print(response)
unlockServiceIDOptions := iamIdentityService.NewUnlockServiceIDOptions(svcID)

response, err := iamIdentityService.UnlockServiceID(unlockServiceIDOptions)
if err != nil {
  panic(err)
}

API を使用したサービス ID 用の API キーの削除

APIを使用してサービスIDの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 を使用してサービス ID API キーを管理する前に、以下を完了していることを確認してください。

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

Terraform を使用してサービスIDのAPIキーを作成する

Terraform を使用してサービス ID の API キーを作成するには、以下の手順を使用します。

  1. main.tf ファイルに引数を作成します。 以下の例では、 ibm_iam_service_api_key リソースを使用して、サービス ID の API キーを作成します。ここで、 name は、サービス API キーを識別する固有の名前です。 このタスクを完了するには、サービスの IAM ID が必要です。

    resource "ibm_iam_service_id" "serviceID" {
     name = "servicetest"
    }
    
    resource "ibm_iam_service_api_key" "testacc_apiKey" {
     name = "testapikey"
     iam_service_id = ibm_iam_service_id.serviceID.iam_id
    }
    

    詳細については 、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 を使用してサービスIDのAPIキーを更新する

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

  1. main.tf ファイルに引数を作成します。 以下の例の name オプションと iam_service_id オプションに新しい値を追加することで、サービス ID の API キーを更新できます。

    resource "ibm_iam_service_id" "serviceID" {
     name = "servicetest"
    }
    
    resource "ibm_iam_service_api_key" "testacc_apiKey" {
     name = "testapikey"
     iam_service_id = ibm_iam_service_id.serviceID.iam_id
    }
    

    詳細については 、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 を使用してサービスIDのAPIキーを削除する

Terraform ファイルを使用して、サービス ID の API キーを作成しておく必要があります。 Terraform を使用してサービス ID の API キーを削除するには、以下の手順を使用します。

  1. 以下の例は、サービス ID の API キーを削除する方法を示しています。

    resource "ibm_iam_service_id" "serviceID" {
     name = "servicetest"
    }
    
    resource "ibm_iam_service_api_key" "testacc_apiKey" {
     name = "testapikey"
     iam_service_id = ibm_iam_service_id.serviceID.iam_id
    }
    

    詳細については 、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