コンテキスト・ベースの制限による Secrets Manager リソースの保護

IBM Cloud® Secrets Manager サービス・インスタンスをセットアップした後、 コンテキスト・ベースの制限(CBR)を使用してアクセスを管理できます。

CBR 設定の管理

コンテキストベースの制限を 使用すると、指定された基準に基づいて、 Secrets Manager リソースへのユーザーとサービスのアクセス制限を定義し、実施できます。

コンテキスト・ベースの制限と ID およびアクセス管理 (IAM) ポリシーを使用して、 Secrets Manager リソースを制御できます。 これらのリソースには、 Secrets Manager インスタンスにリンクされている仮想プライベート・クラウド (VPC) 参照と Internet Protocol (IP) アドレスが含まれます。

これらの制限は、IDに基づく従来のIAMポリシーと連動し、もう1つの保護レイヤーを提供する。 IAM ポリシーとは異なり、コンテキスト・ベースの制限はアクセス権限を割り当てません。 コンテキスト・ベースの制限は、アクセス要求が、構成された許可されるコンテキストからのものであるかどうかを検査します。 IAM アクセスとコンテキスト・ベースの制限の両方によってアクセスが強制されるので、資格情報が漏洩した場合や適切に管理されなかった場合でも、コンテキスト・ベースの制限によって保護が提供されます。 詳しくは、コンテキスト・ベースの制限とはを参照してください。

ルールの作成、更新、削除を行うには、 Secrets Manager サービスで Administrator ロールを持つ必要があります。 ネットワーク・ゾーンを作成、更新、または削除するには、ユーザーには、コンテキスト・ベースの制限サービスに対する Editor 役割または Administrator 役割のいずれかが必要です。 コンテキスト・ベースの制限サービスに対する Viewer 役割を持つユーザーは、ネットワーク・ゾーンのみをルールに追加できます。

IBM Cloud Activity Tracker または監査ログ・イベントは、 Secrets Managerではなく、コンテキスト・ベースの制限サービスから生成されます。 詳しくは、 コンテキスト・ベースの制約事項のモニター を参照してください。

コンテキスト・ベースの制限を使用して Secrets Manager リソースの保護を開始するには、 リソースを保護するためのコンテキスト・ベースの制限の活用 のチュートリアルを参照してください。

Secrets Manager のコンテキスト・ベースの制限との統合方法

アクセスを制限するには、 ゾーン および ルール を作成する必要があります。

まず、ネットワークやリソースの定義に適切な詳細を持つゾーンを作成する。 次に、そのゾーンを指定されたリソースにアタッチし、アクセスを制限する。 RESTful API または コンテキスト・ベースの制限を使用して、ゾーンとルールを作成できます。 ゾーンまたはルールを作成または更新した後、変更が有効になるまでに数分かかる場合があります。

CBR ルールは、プロビジョニング・プロセスまたはプロビジョン解除プロセスには適用されません。

制限

ユーザーがインスタンス・レベルの IAM アクセス権限を持っている場合、特定のシークレット・グループに適用される CBR ルールは有効になりません。 この制限を回避するには、ユーザーの IAM アクセス・ポリシーをシークレット・グループのみに設定します。

コンテキスト・ベースの制限は、 Secrets Manager API に関連付けられているアクションのみを保護します。 以下のプラットフォーム API に関連付けられたアクションは、コンテキスト・ベースの制限によって保護されません。 特定のアクション ID については、API 資料を参照してください。

ネットワーク・ゾーンの作成

ネットワーク・ゾーンを作成することで、いつルールを適用できるかを決定するためにアクセス要求が発信されるネットワーク・ロケーションの許可リストを定義できます。 ネットワーク・ロケーションのリストは、以下の属性によって指定できます。

  • IP アドレス。これには、個々のアドレス、アドレス範囲、サブネットが含まれます。
  • VPC
  • サービス参照。これは、他の IBM Cloud サービスからのアクセスを許可します。

他の IBM Cloud リソースを対象とするルールのネットワークゾーンには、必ず Secrets Manager を追加してください。そうしないと、ワークフローの一部の操作が失敗する可能性があります。

仮想プライベート・クラウド内のクラシック・インフラストラクチャー上に IBM Cloud 仮想サーバーを作成した場合、CBR ルールに使用するプライベート IP アドレスは仮想プライベート・クラウドのゲートウェイ IP になります。 クラシック・インフラストラクチャー上の仮想サーバーには内部 IP アドレスを使用しないでください。 ゲートウェイIPアドレスを見つけるには、仮想プライベート・クラウド・インフラで該当する IBM Cloud サービス・エンドポイント・ソースIPアドレスを選択します。

APIを使用したネットワーク・ゾーンの作成

create-zone コマンドを使用して、ネットワーク・ゾーンを作成できます。 詳しくは、 API の資料 を参照してください。 Secrets Manager をサービス参照としてネットワーク・ゾーンに追加して、 Secrets Manager がルールの対象であるアカウント内のリソースおよびサービスにアクセスできるようにすることができます。

Secrets Manager の serviceRef 属性は secrets-manager です。

参照ターゲットを確認することで、使用可能なサービスを判別できます。

Secrets Manager をネットワーク・ゾーンに追加するペイロードの例。

{
  "name": "Example zone 1",
  "description": "",
  "addresses": [
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "secrets-manager",
        "account_id": "ACCOUNT-ID"
      }
    }
  ]
}

複数のサービス、IP アドレス、および VPC をネットワーク・ゾーンに追加するペイロードの例。

{
  "name": "zone",
  "description": "",
  "addresses": [
    {
      "type": "ipAddress",
      "value": "192.168.0.0"
    },
    {
      "type": "vpc",
      "value": "crn:v1:bluemix:public:is:us-east:a/CRN"
    },
    {
      "type": "vpc",
      "value": "crn:v1:bluemix:public:is:us-south:a/CRN"
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "cloud-object-storage",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "codeengine",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "containers-kubernetes",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_type": "platform_service",
        "account_id": "ACCOUNT-ID"
      }
    },
    {
      "type": "serviceRef",
      "ref": {
        "service_name": "iam-groups",
        "account_id": "ACCOUNT-ID"
      }
    }
  ],
  "excluded": []
}

ゾーンを作成した後、それらを 更新または削除 することができます。

UIを使ったネットワークゾーンの作成

前提条件および要件を設定した後、UI でゾーンを作成できます。 詳しくは、 コンテキスト・ベースの制限の作成 を参照してください。

  1. 許可リストに追加するリソースを決定します。
  2. コンソールで コンテキスト・ベースの制限を作成する 手順に従います。 Secrets Manager サービスをネットワーク・ゾーンに追加して、 IBM Cloud® Secrets Manager がアカウント内のサービスおよびリソースにアクセスできるようにします。

ゾーンを作成した後、それらを 更新または削除 することもできます。

CLIを使用したネットワーク・ゾーンの作成

cbr-zone-create コマンドを使用して、ネットワーク・ロケーション、VPC、およびサービス参照をネットワーク・ゾーンに追加できます。 詳しくは、CBR CLI リファレンス を参照してください。 Secrets Manager をサービス参照としてネットワーク・ゾーンに追加して、 Secrets Manager がルールの対象であるアカウント内のリソースおよびサービスにアクセスできるようにします。

  1. CLI からネットワーク・ゾーンを作成するには、 CBR CLI プラグインをインストールします
  2. cbr-zone-create コマンドを使用して、ネットワーク・ゾーンにリソースを追加します。 詳しくは、CBR CLI リファレンス を参照してください。 Secrets Manager の service_namesecrets-manager であることに注意してください。

使用可能なサービス参照のリストを見つけるには、 ibmcloud cbr service-ref-targets コマンド を実行します。

secrets-manager サービスをネットワーク・ゾーンに追加するコマンドの例。

ibmcloud cbr zone-create --name example-zone-1 --description "Example zone 1" --service-ref service_name=secrets-manager

ルールの解説

ゾーンを作成したら、ルールを作成してゾーンをネットワーク・リソースにアタッチできます。 リソースをルールに追加するときに、ネットワーク・トポロジーに固有の使用可能な エンドポイントのタイプ から選択できます。

APIを使用してルールを作成する

ネットワーク・ゾーンの作成から収集した情報を使用して、API でルールを定義できます。

以下の例を検討して、 Secrets Managerのルールを作成する方法を学習します。 詳しくは、 API の資料 を参照してください。

以下のペイロードの例では、 CLUSTER-ID クラスターを保護するルールを作成します。 NETWORK-ZONE-ID ゾーン内のリソースのみがクラスターにアクセスできます。 operations が指定されていない場合、 NETWORK-ZONE-ID ゾーン内のリソースは、 cluster API と management API の両方にアクセスできます。

{
  "description": "Example rule 1",
  "resources": [
    {
      "attributes": [
        {
          "name": "accountId",
          "value": "ACCOUNT-ID"
        },
        {
          "name": "serviceName",
          "value": "secrets-manager"
        },
        {
          "name": "serviceInstance",
          "value": "CLUSTER-ID"
        }
      ]
    }
  ],
  "contexts": [
    {
      "attributes": [
        {
          "name": "networkZoneId",
          "value": "NETWORK-ZONE-ID"
        },
        {
          "name": "endpointType",
          "value": "private"
        }
      ]
    }
  ]
}

ルールを作成した後、それらを 更新 および 削除 できます。

UIを使用してルールを作成する

前提条件と要件を設定した後、UI でルールを作成できます。

  1. 許可リストに追加するリソースを決定します。
  2. コンソールで コンテキスト・ベースの制限を作成する 手順に従います。 Secrets Manager サービスをネットワーク・ゾーンに追加して、 IBM Cloud® Secrets Manager がアカウント内のサービスおよびリソースにアクセスできるようにします。

ルールを作成した後、それらを 更新 および 削除 できます。

CLI を使用したルールの作成

Secrets Managerのルールを作成する方法については、以下の例を参照してください。 詳しくは、CBR CLI リファレンス を参照してください。

  1. CLI からルールを作成するには、 CBR CLI プラグインをインストールします
  2. ibmcloud cbr rule-create コマンド を使用して、CBR ルールを作成できます。 詳しくは、CBR CLI リファレンス を参照してください。 Secrets Manager の service_namesecrets-manager であることに注意してください。 サービス名のリストを見つけるには、 ibmcloud cbr service-ref-targets コマンドを実行します。 サービスの API タイプのリストを見つけるには、 ibmcloud cbr api-types --service-name SERVICE コマンドを実行します。

addresses キー、 cluster API タイプ、および ipAddress タイプを使用するルールを作成するためのサンプル・コマンド。

ibmcloud cbr rule-create my-rule-1 --service-name secrets-manager --api-type crn:v1:bluemix:public:secrets-manager::::api-type:cluster --zone-id ZONE-ID

以下のコマンドは、 CLUSTER-ID クラスターを保護するルールを作成します。 NETWORK-ZONE-ID ネットワーク・ゾーン内のリソースのみがクラスターにアクセスできます。 このルールには、 clustermanagement の両方の API タイプが含まれます。

ibmcloud cbr rule-create my-rule-2 --service-name secrets-manager --service-instance CLUSTER-ID --zone-id NETWORK-ZONE-ID

次のステップ

ゾーンやルールの作成または変更には、アクセスと可用性を確保するための十分なテストが必要です。

適切なルールが確立されていない場合、定義されたゾーン外でリソースにアクセスしようとするユーザーは、 HTTP error 401