サービスとアプリの連携

新しいサービス認証情報を生成することで、 IBM Cloud サービスにアプリやサードパーティ製ツールを接続します。 これらの認証情報は、 IBM Cloud® または AWS のような外部プラットフォームでホストされているかどうかに関わらず、お客様のアプリと、お客様が利用したい IBM Cloud® サービスとの間の橋渡しとなります。 例えば、 AWS がホストするアプリを watsonx Assistant と統合する場合、必要なアクセス権限を提供するサービス認証情報を生成します。 次に、アプリの設定に追加して接続を確立します。

アプリにクレデンシャルを追加するには、使用しているアプリまたはコンピュート・オプションのタイプのドキュメントを参照してください。

サービス資格の作成

一度しか表示できないクレデンシャルは、後で取り出す必要がある場合は安全に保存する必要がある。 既存のクレデンシャルはこのプロパティの影響を受けない。 詳細については、 ワンタイム・クレデンシャルを 参照のこと。

IBM Cloud Identity and Access Management (IAM) によって管理されるサービスは、リソース・キー (資格情報とも呼ばれる) を生成できます。 資格情報は、サービスに固有であり、各サービスが、生成する必要がある資格情報をどのように定義しているかによって異なります。 クレデンシャルには、ユーザー名、パスワード、ホスト名、ポート、 URL が含まれる場合がありますが、各クレデンシャルの内容は、それを生成するサービスに固有のものです。

サービスの中には、パラメーターを渡す必要がある追加データを生成するものもあります。 例えば、あるサービスでは、生成されるリソース・キーで返されるデフォルト言語を設定するための言語パラメーターの入力が要求される場合があります。

ワンタイムクレデンシャルは、サービスクレデンシャル(リソースキーとも呼ばれる)をサポートするすべてのサービスでデフォルトで無効になっている。 サービス・クレデンシャルをサポートするサービスの詳細については、 サポートされる IBM Cloud サービスを 参照のこと。

サービスにクレデンシャルを追加するには

サービスに資格情報を追加するには、以下の手順に従います

  1. リソースリストからサービス名を選択し、サービスの詳細ページを開きます。

  2. **「サービス資格情報」**をクリックします。

  3. リソースキーの値を後で取得できるかどうかを決定します

    1. 用途に応じてオンまたはオフに設定します。 リソースインスタンスの管理者ロールを持つユーザーは、 Resource Controller API を 使用してこの設定を管理できます。

      認証情報への共有アクセスを防止することで、セキュリティのベストプラクティスや PCI DSSなどの規制への準拠を確実にするためにOnに設定します。

  4. クレデンシャルの作成 」をクリックする。

  5. 名前を入力してください。

  6. IAMサービスアクセス権限を割り当てる。 役割の詳細については 、 IBM Cloud のIAMの役割 を参照してください。

    1. None を指定すると、新しいまたは既存のサービスIDをサービスクレデンシャルに関連付けることでアクセスを管理する場合に、新しいクレデンシャルに役割を割り当てないようにすることができます。
  7. (オプション) 既存のサービス ID または新規サービス ID を選択して、クレデンシャルに関連付ける。 この方法では 、[管理] > [アクセス(IAM)] > [サービスID] に進むことで、IAM内で直接アクセスを管理することができます。 詳しくは、『サービス ID の作成と処理』を参照してください。

    より細かいリソースにアクセスできるサービスでは、サービスIDを使用して、 Object Storage バケットなどのサブリソースにのみアクセスを許可することができます。

  8. 詳細オプション] をクリックすると、インラインまたはファイルで提供されるサービス固有の設定パラメータを含む有効なJSONオブジェクトとして、より多くのパラメータを提供します。

    多くのサービスでは追加のパラメーターは必要なく、追加パラメーターを必要とするサービスでは、各サービスが独自の固有パラメーター・リストを定義しています。 サポートされている設定パラメータのリストについては、特定のサービスのドキュメントを参照してください。

  9. Create をクリックして、新しいサービス・クレデンシャルを生成する。

    サービス資格情報は読み取り専用です。 ユーザーは認証情報をコピーまたはダウンロードすることができる。

  10. クレデンシャルが 1 回限りの表示に設定されている場合、再度表示することはできない。

  11. 新しいサービス資格の詳細を拡大する。 アプリケーションまたは外部の消費者が必要とする認証プロパティをコピーします。 例えば、APIキーまたはパスワードと URL。

APIを使用したサービス・クレデンシャルの作成

一度しか表示できないクレデンシャルは、後で取り出す必要がある場合は安全に保存する必要がある。 既存のクレデンシャルはこのプロパティの影響を受けない。 詳細については、 ワンタイム・クレデンシャルを 参照のこと。

IBM Cloud サービスは、クレデンシャルとしても知られるリソース・キーを生成できる。 資格情報は、サービスに固有であり、各サービスが、生成する必要がある資格情報をどのように定義しているかによって異なります。 クレデンシャルには、ユーザー名、パスワード、ホスト名、ポート、 URL が含まれる場合がありますが、各クレデンシャルの内容は、それを生成するサービスに固有のものです。

サービスの中には、パラメーターを渡す必要がある追加データを生成するものもあります。 例えば、あるサービスでは、生成されるリソース・キーで返されるデフォルト言語を設定するための言語パラメーターの入力が要求される場合があります。

IBM Cloud サービス用に生成した新しいクレデンシャルに、IAM サービスアクセスロールを割り当てることができます。 このロールは、特定のリソースではなく、サービスインスタンス全体へのアクセスを許可します。 よりきめ細かなリソースアクセスが必要なサービスでは、 Object Storage バケットのようなサブリソースへのアクセスのみを許可したい場合があります。 この場合、新しいクレデンシャルには役割を割り当てない。 このように、クレデンシャルをサービスIDに関連付けることで、きめ細かいアクセス管理が可能になり、バケットなどの特定のリソースにスコープを限定したIAMポリシーを作成することができます。 これを行うには 、「管理」>「アクセス(IAM)」>「サービスID」 に移動します。 サービス認証キーと同じ名前のサービスIDを選択し 、「アクセス権の割り当て」 をクリックします。

リソース・キーを作成するには、以下の例のように Resource Controller API を呼び出します。

curl -X POST https://resource-controller.cloud.ibm.com/v2/resource_keys -H 'Authorization: Bearer <IAM_TOKEN>' -H 'Content-Type: application/json' -d '{
  "name": "my-instance-key-1",
  "source": "267bf377-7fa2-43f6-94ec-09103a8e89d4",
  "role": "Writer"
}'
ResourceKeyPostParameters parameters = new ResourceKeyPostParameters.Builder()
  .add("exampleParameter", "exampleValue")
  .build();
CreateResourceKeyOptions createResourceKeyOptions = new CreateResourceKeyOptions.Builder()
  .name(keyName)
  .source(instanceGuid)
  .parameters(parameters)
  .build();

Response<ResourceKey> response = service.createResourceKey(createResourceKeyOptions).execute();
ResourceKey resourceKey = response.getResult();

System.out.printf("createResourceKey() response:\n%s\n", resourceKey.toString());
const parameters = {
  'exampleParameter': 'exampleValue'
};

const params = {
  name: keyName,
  source: instanceGuid,
  parameters: parameters,
};

resourceControllerService.createResourceKey(params)
  .then(res => {
    instanceKeyGuid = res.result.guid;
    console.log('createResourceKey() response:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
parameters = {
    'exampleParameter': 'exampleValue'
}
resource_key = resource_controller_service.create_resource_key(
    name=key_name,
    source=instance_guid,
    parameters=parameters
).get_result()

print('\ncreate_resource_key() response:\n',
      json.dumps(resource_key, indent=2))
createResourceKeyOptions := resourceControllerService.NewCreateResourceKeyOptions(
  keyName,
  instanceGUID,
)

parameters := &resourcecontrollerv2.ResourceKeyPostParameters{}
parameters.SetProperty("exampleParameter", "exampleValue")
createResourceKeyOptions.SetParameters(parameters)

resourceKey, response, err := resourceControllerService.CreateResourceKey(createResourceKeyOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(resourceKey, "", "  ")
fmt.Printf("\nCreateResourceKey() response:\n%s\n", string(b))

APIキーまたはその他の認証プロパティを使用して、サービスインスタンスをアプリやその他の外部消費者と接続します。

Terraform を使用してサービス資格情報を作成する

一度しか表示できないクレデンシャルは、後で取り出す必要がある場合は安全に保存する必要がある。 既存のクレデンシャルはこのプロパティの影響を受けない。 詳細については、 ワンタイム・クレデンシャルを 参照のこと。

クレデンシャルには、ユーザー名、パスワード、ホスト名、ポート、 URL が含まれるかもしれない。しかし、各クレデンシャルの内容は、 it.Before を生成するサービスに固有である。Terraform を使って、アプリや外部コンシューマーを IBM Cloud サービスに接続するためのクレデンシャルを作成することができる:

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

IBM Cloud サービスにアプリまたは外部消費者(consumer)を接続するための認証情報を作成するには、以下の手順に従います

  1. main.tf ファイルに引数を作成します。 ibm_resource_instance リソースを使用して、サービス ID を指定せずにリソースの資格情報を作成する例を以下に示します。name は、資格情報を識別するための固有の名前です。

    data "ibm_resource_instance" "resource_instance" {
     name = "myobjectsotrage"
    }
    
    resource "ibm_resource_key" "resourceKey" {
     name                 = "myobjectkey"
     role                 = "Viewer"
     resource_instance_id = data.ibm_resource_instance.resource_instance.id
    
     //User can increase timeouts
     timeouts {
       create = "15m"
      delete = "15m"
     }
    }
    

    デフォルトでは、ibm_resource_key リソースは、サービスのパブリック・サービス・エンドポイントを使用するサービス資格情報を作成します。

    リソース・グループ・インスタンスに関連付ける tags を指定できます。 詳細は Terraform Resource Management ページの引数リファレンス詳細を参照。

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

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

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

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

      terraform apply
      

APIキーまたはその他の認証プロパティを使用して、サービスインスタンスをアプリやその他の外部消費者と接続します。

Terraformを使ってクレデンシャルを表示する

作成後にクレデンシャルを取得できるのは、そのクレデンシャルに対して onetime_credentialsfalse である場合のみである。 リソースインスタンス上で以下のアクセス権を持つユーザーは、 onetime_credentials に設定されたクレデンシャルのサービスキー値を閲覧することができます。 false

  • サービス・クレデンシャルのアクセスと同等以上のサービス・インスタンスへのアクセスを持つユーザー。 詳細は、 クレデンシャル・レベル・アクセスを 参照。
  • サービスインスタンスの管理者ロールを持つユーザ
  • IAMアクションを持つユーザー resource-controller.credential.retrieve_all。 このアクションは管理者ロールで与えられる。

サービスに対する既存のサービス資格情報を表示するには、以下のステップを実行します。

  1. main.tf ファイルに引数を作成します。 以下の例では、リソースの既存のクレデンシャルを取得します。 詳細は ibm_resource_key Terraform ドキュメント を参照。

    data "ibm_resource_key" "resourceKeydata" {
      name                  = "myobjectKey"
      resource_instance_id  = ibm_resource_instance.resource.id
    }
    
  2. 構成ファイルの作成が完了したら、Terraform CLI を初期化します。 詳しくは、 作業ディレクトリーの初期化を参照してください。

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

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

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

      terraform apply
      

1回限りの資格証明書

リソース・インスタンスには、そのインスタンスに対して作成するクレデンシャルがワンタイム・ビューであるかどうかを決定する onetime_credentials プロパティがあります。 作成時のインスタンスの設定によって、各資格情報のプロパティーの設定方法が決定され、後で変更することはできません。

  • このプロパティを false に設定すると、アクセス権を持つユーザはいつでもクレデンシャルを取得できます。 クレデンシャルの取得についての詳細は、ibm_resource_key Terraform のドキュメントを 参照してください。

  • このプロパティが true に設定されている場合、クレデンシャルを表示できるのは作成時のみです

    ワンタイムビューの認証情報は、シークレットマネージャー、パスワードマネージャー、または Object Storage のようなセキュアなストレージをアプリケーションに使用して安全に保存し、紛失を防ぎます。

サービス・インスタンスのワンタイム・ビューを有効にして、最小権限モデルに合わせ、認証情報への共有アクセスを避ける。 共有キーは、アカウント内のIDがどのようにリソースにアクセスするかを監査することを困難にします。

リソースインスタンスのワンタイムビュー設定の管理

サービスインスタンスの管理者ロールまたは IAM アクション resource-controller.instance.update_onetime_credential_off を持つユーザーは、リソースインスタンスのワンタイムビュー設定を管理できます。

 {
      "displayName": {
        "default": "Resource Instance Update Onetime Credential Off"
      },
      "description": {
        "default": "The ability to change onetime_credential from On to Off for existing instances."
      },
      "id": "resource-controller.instance.update_onetime_credential_off",
      "roles": [
        "crn:v1:bluemix:public:iam::::role:Administrator"
      ],
      "apiTypes": [
        "crn:v1:bluemix:public:context-based-restrictions::::platform-api-type:resource-management"
      ]
    }

詳しくは、ibm_resource_instance Terraform のドキュメントを 参照して、 onetime_credentials プロパティを更新してください。 インスタンスの設定を変更すると、既存のクレデンシャルは作成時の設定を保持します。

資格情報レベルのアクセス権限

ユーザーのアクセス権限は、サービス資格情報のアクセス権限以上でなければなりません。 例えば、資格情報に IAM サービス役割 Writer がある場合、資格情報を表示しようとするユーザーには、その特定のサービスに対する IAM サービス役割 Writer または Manager が割り当てられている必要があります。 ユーザーが適切なアクセス権限を持っていない場合は、API キー値などの詳細は編集されます。

    "credentials": {
        "REDACTED": "REDACTED"
    },

IAM レベルのアクセス権限

ユーザーのアクセス権限と資格情報のアクセス権限を比較して資格情報レベルのアクセス権限を判別できない場合、資格情報は編集されます。

    "credentials": {
        "REDACTED": "REDACTED_EXPLICIT"
    },

資格情報の表示

onetime_credentialsfalse に設定されたサービスに対してクレデンシャルが作成された後、クレデンシャルの値を必要とするユーザーはいつでもそれを見ることができます。 ただし、API キー値を含む資格情報の詳細を表示するには、すべてのユーザーが適切なレベルのアクセス権限を持っている必要があります。 作成後にクレデンシャルを取得できるのは、そのクレデンシャルのワンタイム・ビューがオフの場合のみである。 リソースインスタンスで以下のアクセス権を持つユーザーは、ワンタイムビューをオフにした資格情報のサービスキー値を表示できます。

  • サービス・クレデンシャルのアクセスと同等以上のサービス・インスタンスへのアクセスを持つユーザー。 詳細は、 クレデンシャル・レベル・アクセスを 参照。
  • サービスインスタンスの管理者ロールを持つユーザー。
  • IAMアクションを持つユーザー resource-controller.credential.retrieve_all。 このアクションは管理者ロールで与えられる。

サービスに対する既存のサービス資格情報を表示するには、以下のステップを実行します。

  1. 「リソース・リスト」ページで、サービス詳細ページを開くサービスの名前を選択します。
  2. **「サービス資格情報」**をクリックします。
  3. 既存の資格情報の行で、**「資格情報の表示」**を展開します。

1回限りの資格証明書

クレデンシャルには onetime_credentials プロパティがあり、最初の作成後にクレデンシャルを取得して表示できるかどうかを決定します。 プロパティが false の場合、アクセス権を持つユーザーはいつでもクレデンシャルの値を表示できます。 リソース・インスタンスには、そのインスタンスに対して作成した資格情報が1回限りのビューであるかどうかを決定する「1回限りのビュー」設定があります。 1回限りのビューの資格情報は、作成時にのみ表示および保存できます。 作成時のインスタンスの設定によって、各資格情報のプロパティーの設定方法が決定され、後で変更することはできません。

  • ワンタイム・ビューが「オフ」の場合、クレデンシャルは、アクセス権を持つユー ザーによっていつでも取得できる。

  • ワンタイム・ビューが「オン」の場合、クレデンシャルは作成時にのみ表示できる。

    ワンタイムビューの認証情報は、シークレットマネージャー、パスワードマネージャー、または Object Storage のようなセキュアなストレージをアプリケーションに使用して安全に保存し、紛失を防ぎます。

サービス・インスタンスのワンタイム・ビューを有効にして、最小権限モデルに合わせ、認証情報への共有アクセスを避ける。 共有キーは、アカウント内のIDがどのようにリソースにアクセスするかを監査することを困難にします。

リソースインスタンスのワンタイムビュー設定の管理

サービスインスタンスの管理者ロールまたは IAM アクション resource-controller.instance.update_onetime_credential_off を持つユーザーは、そのインスタンスのワンタイムビュー設定を管理できます。

 {
      "displayName": {
        "default": "Resource Instance Update Onetime Credential Off"
      },
      "description": {
        "default": "The ability to change onetime_credential from On to Off for existing instances."
      },
      "id": "resource-controller.instance.update_onetime_credential_off",
      "roles": [
        "crn:v1:bluemix:public:iam::::role:Administrator"
      ],
      "apiTypes": [
        "crn:v1:bluemix:public:context-based-restrictions::::platform-api-type:resource-management"
      ]
    }

詳しくは、 リソースコントローラ API でインスタンスの onetime_credentials プロパティを更新する を参照ください。 インスタンスの設定を変更すると、既存のクレデンシャルは作成時の設定を保持します。

このプロパティの変更前に作成された既存のクレデンシャルは影響を受けない。

資格情報レベルのアクセス権限

ユーザーのアクセス権限は、サービス資格情報のアクセス権限以上でなければなりません。 例えば、資格情報が IAM サービス役割のWriterを持っている場合、資格情報の表示を試行するユーザーは、割り当てられたその特定のサービスに対して IAM サービス役割のWriterまたはManagerを持っている必要があります。 ユーザーが適切なアクセス権限を持っていない場合は、API キー値などの詳細は編集されます。

    "credentials": {
        "REDACTED": "REDACTED"
    },

IAM レベルのアクセス権限

ユーザーのアクセス権限と資格情報のアクセス権限を比較して資格情報レベルのアクセス権限を判別できない場合、資格情報は編集されます。

    "credentials": {
        "REDACTED": "REDACTED_EXPLICIT"
    },

資格情報を表示するには、ユーザーに IAM レベルのアクセス・アクション resource-controller.credential.retrieve_all が必要です。 このアクションは管理者役割で実行され、資格情報レベルのアクセス権限をオーバーライドします。これにより、ユーザーが資格情報を表示できるようになります。

API を使用した資格情報の表示

onetime_credentialsfalse に設定されたサービスに対してクレデンシャルが作成された後、クレデンシャルの値を必要とするユーザーはいつでもそれを見ることができます。 ただし、API キー値を含む資格情報の詳細を表示するには、すべてのユーザーが適切なレベルのアクセス権限を持っている必要があります。 ユーザーのアクセス権限は、サービス資格情報のアクセス権限以上でなければなりません。 たとえば、クレデンシャルに IAM サービス・ロール Writer がある場合、クレデンシャルを表示しようとするユーザは、その特定のサービスの IAM サービス・ロール Writer または Manager を割り当てられていなければならない。 作成後にクレデンシャルを取得できるのは、そのクレデンシャルに対して onetime_credentialsfalse である場合のみである。 リソースインスタンスで以下のアクセス権を持つユーザーは、 onetime_credentials に設定されたクレデンシャルのサービスキー値を見ることができます。 false

  • サービス・クレデンシャルのアクセスと同等以上のサービス・インスタンスへのアクセスを持つユーザー。 詳細は、 クレデンシャル・レベル・アクセスを 参照。
  • サービスインスタンスの管理者ロールを持つユーザー。
  • IAMアクションを持つユーザー resource-controller.credential.retrieve_all。 このアクションは管理者ロールで与えられる。

すべてのリソース・キーのリストを取得するには、以下の例のように Resource Controller API を呼び出します。

curl -X GET https://resource-controller.cloud.ibm.com/v2/resource_keys -H 'Authorization: Bearer <IAM_TOKEN>'
ListResourceKeysOptions listResourceKeysOptions = new ListResourceKeysOptions.Builder()
  .name(keyName)
  .build();

Response<ResourceKeysList> response = service.listResourceKeys(listResourceKeysOptions).execute();
ResourceKeysList resourceKeysList = response.getResult();

System.out.printf("listResourceKeys() response:\n%s\n", resourceKeysList.toString());
const params = {
  name: keyName,
};

resourceControllerService.listResourceKeys(params)
  .then(res => {
    console.log('listResourceKeys() response:\n' + JSON.stringify(res.result, null, 2));
  })
  .catch(err => {
    console.warn(err)
  });
resource_keys_list = resource_controller_service.list_resource_keys(
    name=key_name
).get_result()

print('\nlist_resource_keys() response:\n',
      json.dumps(resource_keys_list, indent=2))
listResourceKeysOptions := resourceControllerService.NewListResourceKeysOptions()
listResourceKeysOptions = listResourceKeysOptions.SetName(keyName)

resourceKeysList, response, err := resourceControllerService.ListResourceKeys(listResourceKeysOptions)
if err != nil {
  panic(err)
}
b, _ := json.MarshalIndent(resourceKeysList, "", "  ")
fmt.Printf("\nListResourceKeys() response:\n%s\n", string(b))

応答の例:

{
  "rows_count": 1,
  "next_url": null,
  "resources": [
    {
      "id": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94:resource-key:23693f48-aaa2-4079-b0c7-334846eff8d0",
      "guid": "23693f48-aaa2-4079-b0c7-334846eff8d0",
      "url": "/v2/resource_keys/23693f48-aaa2-4079-b0c7-334846eff8d0",
      "created_at": "2018-07-02T22:03:43.837979455Z",
      "updated_at": "2018-07-02T22:03:43.837979455Z",
      "deleted_at": null,
      "created_by": "IBMid-5500093BHN",
      "updated_by": "IBMid-5500093BHN",
      "deleted_by": "",
      "source_crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94::",
      "role": "crn:v1:bluemix:public:iam::::serviceRole:Writer",
      "name": "my-instance-key-1",
      "parameters": {
        "role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer"
      },
      "crn": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94:resource-key:23693f48-aaa2-4079-b0c7-334846eff8d0",
      "state": "active",
      "account_id": "4329073d16d2f3663f74bfa955259139",
      "resource_group_id": "0be5ad401ae913d8ff665d92680664ed",
      "resource_id": "dff97f5c-bc5e-4455-b470-411c3edbe49c",
      "onetime_credentials": false,
      "credentials": {
        "apikey": "XXXX-YYYY-ZZZZ\"",
        "endpoints": "https://cos-service-armada-s.us-south.containers.mybluemix.net/endpoints",
        "iam_apikey_description": "Auto generated apikey during resource-key operation for Instance - crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94::",
        "iam_apikey_name": "auto-generated-apikey-23693f48-aaa2-4079-b0c7-334846eff8d0",
        "iam_role_crn": "crn:v1:bluemix:public:iam::::serviceRole:Writer",
        "iam_serviceid_crn": "crn:v1:bluemix:public:iam-identity::a/4329073d16d2f3663f74bfa955259139::serviceid:ServiceId-64c29e4f-422d-468c-a11b-1a8f671b5c89",
        "resource_instance_id": "crn:v1:bluemix:public:cloud-object-storage:global:a/4329073d16d2f3663f74bfa955259139:8d7af921-b136-4078-9666-081bd8470d94::"
      },
      "iam_compatible": true,
      "migrated": false,
      "resource_instance_url": "/v2/resource_instances/8d7af921-b136-4078-9666-081bd8470d94",
      "resource_alias_url": null
    }
  ]
}

1回限りの資格証明書

リソース・インスタンスには、そのインスタンスに対して作成するクレデンシャルがワンタイム・ビューであるかどうかを決定する onetime_credentials プロパティがあります。 作成時のインスタンスの設定によって、各資格情報のプロパティーの設定方法が決定され、後で変更することはできません。

  • このプロパティを false に設定すると、アクセス権を持つユーザはいつでもクレデンシャルを取得できます。 クレデンシャルの取得の詳細については、 リソース・キーの取得 操作を参照のこと。

  • このプロパティが true に設定されている場合、クレデンシャルを表示できるのは作成時のみなので、必ず安全に保存してください。

    ワンタイムビューの認証情報は、シークレットマネージャー、パスワードマネージャー、または Object Storage のようなセキュアなストレージをアプリケーションに使用して安全に保存し、紛失を防ぎます。

サービス・インスタンスのワンタイム・ビューを有効にして、最小権限モデルに合わせ、認証情報への共有アクセスを避ける。 共有キーは、アカウント内のIDがどのようにリソースにアクセスするかを監査することを困難にします。

リソースインスタンスのワンタイムビュー設定の管理

サービスインスタンスの管理者ロールまたは IAM アクション resource-controller.instance.update_onetime_credential_off を持つユーザーは、そのインスタンスのワンタイムビュー設定を管理できます。

 {
      "displayName": {
        "default": "Resource Instance Update Onetime Credential Off"
      },
      "description": {
        "default": "The ability to change onetime_credential from On to Off for existing instances."
      },
      "id": "resource-controller.instance.update_onetime_credential_off",
      "roles": [
        "crn:v1:bluemix:public:iam::::role:Administrator"
      ],
      "apiTypes": [
        "crn:v1:bluemix:public:context-based-restrictions::::platform-api-type:resource-management"
      ]
    }

詳しくは、 リソースコントローラ API でインスタンスの onetime_credentials プロパティを更新する を参照ください。 インスタンスの設定を変更すると、既存のクレデンシャルは作成時の設定を保持します。

資格情報レベルのアクセス権限

ユーザーのアクセス権限は、サービス資格情報のアクセス権限以上でなければなりません。 例えば、資格情報に IAM サービス役割 Writer がある場合、資格情報を表示しようとするユーザーには、その特定のサービスに対する IAM サービス役割 Writer または Manager が割り当てられている必要があります。 ユーザーが適切なアクセス権限を持っていない場合は、API キー値などの詳細は編集されます。

    "credentials": {
        "REDACTED": "REDACTED"
    },

IAM レベルのアクセス権限

ユーザーのアクセス権限と資格情報のアクセス権限を比較して資格情報レベルのアクセス権限を判別できない場合、資格情報は編集されます。

    "credentials": {
        "REDACTED": "REDACTED_EXPLICIT"
    },

資格情報を表示するには、ユーザーに IAM レベルのアクセス・アクション resource-controller.credential.retrieve_all が必要です。 このアクションは管理者役割で実行され、資格情報レベルのアクセス権限をオーバーライドします。これにより、ユーザーが資格情報を表示できるようになります。