この文書では、コンテキストベースの制限を使用してリソース Cloud Databases を保護する手順を説明します。 このドキュメントを使用して、コンテキストベースの制限に対応するためのリソースを準備してください。現在の実装段階では、スコープ設定ルールをコントロールプレーンに提供していません Cloud Databases。

コンテキスト・ベースの制約事項

コンテキストベースの制限により、 アカウント所有者と管理者は、アクセス要求のコンテキストに基づいて、 IBM Cloud® リソースに対するアクセス制限を定義し、実施することができます。 リソース Cloud Databases へのアクセスは、コンテキストベースの制限とIAMポリシーによって Identity and Access Management 制御できます。

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

ユーザーがルールを作成、更新、または削除するには、サービス Cloud Databases 上で管理者ロールを付与されている必要があります。 また、ネットワークゾーンの作成、更新、削除を行うには、コンテキストベースの制限サービスのEditorまたはAdministratorロールを持つ必要があります。 コンテキストベースの制限サービスのViewerロールを持つユーザーは、ネットワークゾーンをルールに追加できる。

生成されたIBM Cloud Activity Trackerまたは監査ログイベントは、Cloud Databases、コンテキストベースの制限サービスから発生します。Cloud Databasesは、コンテキストベースの制限で保護されたプラットフォームのエンドポイント呼び出しによる顧客とのやり取りに対してのみ監査イベントをサポートします。インスタンスのコントロールプレーンAPIでコンテキストベースの制限ルールを有効にする場合、Cloud Databasesは監査イベントをサポートしません。 詳細については、コンテキスト・ベースの制限の監視 を参照のこと。

コンテキストベースの制限でCloud Databasesリソースの保護を開始するには、「コンテキストベースの制限を活用してリソースを保護する」のチュートリアルを参照してください。

どのようにCloud Databasesはコンテキストベースの制限と統合するか

Cloud Databasesサービス、特定のリソース、特定のAPIに対してコンテキストベースの制限を作成できます。

Cloud Databasesリソースの保護

特定のリージョンリソースグループインスタンスを保護するために、コンテキストベースの制限ルールを作成できます。

リージョン
特定の地域のCloud Databasesリソースを保護します。 コンテキストベースの制限ルールにリージョンを含めると、ルールに関連付けたネットワークゾーンのリソースは、そのリージョン内のリソースとしか相互作用できなくなる。 CLIを使用する場合は、--region オプションを指定して、特定の地域のリソースを保護することができます。 UIを使用する場合は、リソース属性でRegionを指定することができます。
リソース・グループ
特定のリソースグループを保護する。 コンテキストベースの制限ルールにリソースグループを含めると、そのルールに関連付けられたネットワークゾーンのリソースは、そのリソースグループのリソースとしか相互作用できなくなります。 特定のリソースグループへのルールのスコープは、クラスタAPIタイプを保護するルールでのみ使用できます。 CLIを使用する場合は、--resource-group-id オプションを指定して、特定のリソースグループのリソースを保護することができます。 UIを使用する場合は、リソース属性でリソースグループを指定できます。
インスタンス
特定のインスタンスを保護する。 コンテキスト・ベースの制限ルールにインスタンスを含めると、ルールに関連付けたネットワーク・ゾーン内のリソースは、そのインスタンス内のリソースとしか相互作用できなくなります。 特定のインスタンスへのルールのスコープは、クラスタAPIタイプを保護するルールでのみ使用できます。 CLIを使用する場合は、--service-instance オプションを指定して、特定のリソースグループのインスタンスを保護することができます。 UIを使用する場合は、リソース属性でサービスインスタンスを指定できます。

コマンドラインインターフェイス(CLI)の使用

コンテキスト・ベースの 制限 CLI プラグインをインストールする ことで、IBM CloudCLI でコンテキスト・ベースの制限を作成および管理できます。

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

ネットワーク・ゾーンとは、アクセス要求が作成される場所の IP アドレスの許可リストを表します。 これは、以下の属性によって指定される 1 つ以上のネットワーク・ロケーションの集合を定義します。

  • IP アドレス。これには、個々のアドレス、アドレス範囲、サブネットが含まれます。
  • VPC。

UIでネットワークゾーンを作成する

  1. IBM Cloud®コンソールの [管理] > [コンテキストベースの制限] に移動します。

  2. ネットワークゾーンを選択します。

  3. 「作成」 をクリックします。

  4. ネットワークゾーンに名前を付け、説明を記入してください。

  5. 許可されたIPアドレス入力してください 単一のIPアドレス、IPアドレスの範囲、または単一のCIDRを入力できます。

    拒否IPアドレス]フィールドはオプションで、[許可IPアドレス]フィールドで指定したIP範囲に含まれる例外のみを含める必要があります。

  6. 許可するVPCを好きなだけ選択してください。

  7. サービスを参照する:コンテキストベースの制限のソースサービスとしてCloud Databasesを選択できますが、ターゲットサービスとしては選択できません。 たとえば、Cloud DatabasesインスタンスをIBM® Key Protect for IBM Cloud®からBYOKを使用してプロビジョニングできます。 この例では、Cloud Databasesがソース・フォーメーションで、IBM® Key Protect for IBM Cloud®がターゲット・フォーメーションである。 次に、Cloud Databasesサービス参照を持つネットワークゾーンを作成し、IBM® Key Protect for IBM Cloud®をターゲットとするルールをネットワークゾーンに関連付けて作成する。 Cloud Databasesサービス参照を追加するには、Service TypeでIAMサービスが自動選択されます。 *サービス]*ドロップダウンで、特定のCloud Databasesサービスを選択します。 作成するゾーンがCloud Databasesをターゲットとする ルールに関連している場合、サービス参照は許可されない。

サービス参照は、サービス Key Protect からサービスへのみ機能 Cloud Databases する。

CLIでネットワーク・ゾーンを作成する

CLIでネットワーク・ゾーンを作成するには、cbr-zone-create コマンドを使用してリソースをネットワーク・ゾーンに追加します。 詳細については、コンテキストベースの制限CLIリファレンス を参照してください。

次のようなコマンドでゾーンを作成する:

ibmcloud cbr zone-create --addresses=1.1.1.1,5.5.5.5 --name=<NAME>

Terraformでネットワークゾーンを作成する

Terraformでゾーンを作成するには、IBM CloudTerraformプロバイダーのドキュメントの指示に従ってください。

CBRゾーンを作成するTerraformスクリプトの例:

resource "ibm_cbr_zone" "cbr_zone" {
  account_id = "12ab34cd56ef78ab90cd12ef34ab56cd"
  addresses {
    type = "ipAddress"
    value = "169.23.56.234"
  }
  addresses {
    type = "ipRange"
    value = "169.23.22.0-169.23.22.255"
  }
  excluded {
    type  = "ipAddress"
    value = "169.23.22.10"
  }
  excluded {
    type  = "ipAddress"
    value = "169.23.22.11"
  }
  description = "this is an example of zone"
  excluded {
        type = "ipAddress"
        value = "value"
  }
  name = "an example of zone"
}

あるいは、 Terraform IBM Modules(TIM)for CBR Zoneを使用して、コンテキストベースの制限のためのゾーンを作成したり、既存のゾーンのアドレスを更新することもできます。

Terraform IBM Modules(TIM) を使ってCBRゾーンを作成する例:

module "ibm_cbr" "zone" {
  source           = "terraform-ibm-modules/cbr/ibm//modules/cbr-zone-module"
  version          = "X.X.X" # Replace "X.X.X" with a release version to lock into a specific release
  name             = "zone_for_pg_access"
  account_id       = "defc0df06b644a9cabc6e44f55b3880s"
  zone_description = "Zone created from terraform"
  addresses        = [{type  = "vpc",value = "vpc_crn"}]
}

CLIでネットワーク・ゾーンを更新する

次のようなコマンドを使ってゾーンを更新する:

ibmcloud cbr zone-update <ZONE-ID> --addresses=1.2.3.4 --name=<NAME>

更新には、ゾーン名ではなく ZONE-ID が必要です。 以下のコマンドを使用して、ゾーンをリストアップし、関連する ZONE-ID を取得します:

ibmcloud cbr zones

コマンドは上書きである zone-update ルールをゼロから作成する場合と同じように、必須フィールドをすべて含める。 必須項目を省略した場合、ルールはそれらの欠落項目を空値で上書きします。また、変更の有無にかかわらず、一部の必須項目が欠落しているため、ルールが失敗する可能性があります。

CLIでネットワーク・ゾーンを削除する

次のようなコマンドでゾーンを削除する:

ibmcloud cbr zone-delete <ZONE-ID>

ルールの作成

ルールは、リソースの属性およびコンテキストに基づいて、特定のクラウド・リソースへのアクセスを制限します。 作成されたルールは、プライベート・エンドポイントでは最大2,000のIP/CIDR値、パブリック・エンドポイントでは最大2,000のIP/CIDR値を受け入れることができる。 この制限はCloud Databasesにのみ適用されます。 その他のIBM Cloud®サービスの制限は異なる場合があります。

Cloud Databasesは IPv6アドレスをサポートしていません。 IPv6アドレスが含まれていても無視される。

許可されていないエンドポイントへのアクセスの完全閉鎖:より強固なセキュリティ・フレームワークを提供するため、パブリック・エンドポイントとプライベート・エンドポイントのアクセス制御を大幅に変更した。 今後、明示的に許可リストに掲載されていないパブリック・エンドポイントとプライベート・エンドポイントの両方へのアクセスは完全に閉鎖される。 この制限により、エンドポイントへのアクセスは許可されたものに限られるため、不正アクセスのリスクを最小限に抑えることができます。

UI でのルールの作成

  1. IBM Cloud®コンソールの [管理] > [コンテキストベースの制限] に移動します。

  2. ルールを選択する。

  3. 「作成」 をクリックします。

  4. サービス] で、ルールを適用するサービスを選択します。

  5. API」で Data plane を選択する。 現在、それ以外の選択はエラーとなる。

    データプレーンAPIタイプでは0アクションが期待される。

    Cloud Databases 現在 、コントロールプレーンをオプションとしてサポートしていません。

  6. リソース] で、[すべてのリソース]または[特定のリソース]にルールを適用します。 詳細については、Cloud Databasesリソースの保護 を参照してください。

  7. 「続行」 をクリックします。

  8. 許可されるエンドポイント・タイプを定義する。

    • すべてのエンドポイント・タイプを許可するには、トグルを No に設定しておく。
    • 特定のエンドポイントタイプのみを許可するには、トグルを「Yes」に設定し、リストから選択します。
  9. すでに作成したネットワークゾーンまたはゾーンを選択するか、「作成」をクリックして新しいネットワークゾーンを作成します。

    コンテキストは、リソースがどこからアクセスできるかを定義し、ネットワークゾーンとルールを効果的に結びつけます。

  10. 追加をクリックして、設定を要約に追加する。

  11. 次へ をクリックします。

  12. あなたのルールに名前をつけなさい。

  13. ルールの適用方法を選択します。

    . に対しては*、報告専用モードは*Cloud Databases 利用できません。

CLIでルールを作成する

CLIでルールを作成するには、適切なCloud Databases service_name が必要です:

  • databases-for-postgresql
  • databases-for-mongodb
  • databases-for-redis
  • databases-for-elasticsearch
  • database-for-mysql
  • messages-for-rabbitmq

この後に続く他のすべてのパラメータは、CBRプラグイン・リファレンス・ガイド で説明されています。

CBRルールを作成するコマンド例:

ibmcloud cbr rule-create --enforcement-mode enabled --context-attributes "networkZoneId=<ZONE-ID>" --resource-group-id <RESOURCE_GROUP_ID> --service-name <SERVICE-NAME> --service-instance <SERVICE-INSTANCE> --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane --description <DESCRIPTION>

現在サポートされている唯一の api-type オプションは Cloud Databasesデータプレーンです。

. に対しては*、報告専用モードは*Cloud Databases 利用できません。

CLIでルールを更新する

CBR ルールを更新するコマンドの例:

ibmcloud cbr rule-update <RULE-ID> --enforcement-mode disabled --context-attributes="networkZoneId=<ZONE-ID>" --resource-group-id   <RESOURCE_GROUP_ID> --service-name <SERVICE_NAME> --api-types crn:v1:bluemix:public:context-based-restrictions::::api-type:data-plane --description    <DESCRIPTION>

コマンドは上書きである rule-update ルールをゼロから作成する場合と同じように、必須フィールドをすべて含める。 必須フィールドを省略した場合、ルールはそれらの欠落したフィールドを空として上書きし、ルールを変更するかどうかに関係なく、それらのフィールドの一部が必須であるため、ルールが失敗する可能性がある。

更新にはルール名ではなく RULE-ID が必要。 以下のコマンドを使用して、ルールをリストアップし、関連する RULE-ID を取得する:

ibmcloud cbr rules

CLIでルールを削除する

ルールを削除するには、次のようなコマンドを使う:

ibmcloud cbr rule-delete <RULE-ID>

オプションとパラメーターの完全なリストには ibmcloud cbr <command> — help を使用する。 例えば、ibmcloud cbr rule-create — help はルール作成用のパラメータを出力する。

Terraformでルールを作成する

Terraformでルールを作成するには、IBM CloudTerraformプロバイダーのドキュメントの指示に従ってください。

ルールを作成するには、適切なCloud Databases service_name 必要です:

  • databases-for-postgresql
  • databases-for-mongodb
  • databases-for-redis
  • databases-for-elasticsearch
  • database-for-mysql
  • messages-for-rabbitmq

次のようなコマンドでルールを作成する:

resource "ibm_cbr_rule" "cbr_rule" {
  contexts {
        attributes {
            name = "networkZoneId"
            value = "559052eb8f43302824e7ae490c0281eb"
        }
        attributes {
               name = "endpointType"
               value = "private"
    }
  }
  description = "this is an example of a rule with one context one zone"
  enforcement_mode = "enabled"
  operations {
        api_types {
            api_type_id = "api_type_id"
        }
  }
  resources {
        attributes {
            name = "accountId"
            value = "12ab34cd56ef78ab90cd12ef34ab56cd"
        }
        attributes {
              name = "serviceName"
              value = "network-policy-enabled"
        }
        tags {
              name     = "tag_name"
              value    = "tag_value"
        }
  }
}

ルールの検証

ルールが適用されていることを確認するには、IBM Cloud®に移動します。ダッシュボードにアクセスし、リソースリストから該当するインスタンスを選択します。 最近のタスク」に、ルールのステータスが表示されます。

ルールを作成または修正するタスクは、インスタンスのタスク・キューに入る。 作業量によっては、ルールの適用が完了するまでに時間がかかる場合があります。