リソースバインディングの作成

特定のVPCから特定の Object Storage バケットへのアクセスを細かく制御するために、リソースバインディングを作成できます。 リソースバインディングの作成は任意ですが、これによりセキュリティグループおよびコンテキストベース制限(CBR)ルールを定義でき、DNS共有VPCトポロジーにおいてVPE経由でアクセス可能なバケットを厳密に制御できます。

リソースバインディングは、1つ以上の Object Storage バケットをVPEに関連付け、関連付けられたVPCから発信されたトラフィックのみがそれらのバケットにアクセスできるように(バケット上のCBRルールと組み合わせて)保証します。

開始前に

リソースバインディングを作成する前に、以下の考慮事項を確認してください:

  • VPCに対して既存のDNSハブおよびDNS共有トポロジが設定されていることを確認してください。

  • DNS共有VPC内のVPEは Cloud Object Storage、リソースバインディングを追加する前に、 必ずリソースごとのバインディングモードを使用して作成する必要があります。 VPEは、ハブVPCまたはDNS共有VPCのいずれかで作成できます。

  • DNS Cloud Object Storage 共有VPCからのみリソースへのアクセスを許可するには、DNS共有VPCが Cloud Object Storage リソースにアクセスすることを明示的に許可するCBRルールを作成する必要があります。

    リソースバインディングを作成する前、およびDNSハブVPCからのアクセスを制限する前に、CBRルールを作成する必要があります。

コンソールでのリソースバインディングの作成

コンソール IBM CloudCloud Object Storage でサービスのリソースバインディングを作成するには、次の手順に従ってください:

  1. コンソール IBM Cloud で、 ナビゲーションメニュー アイコンをクリックし、 メニューアイコン > インフラストラクチャ VPC アイコン > ネットワーク > 仮想プライベートエンドポイントゲートウェイを選択します

  2. サービス クラウドオブジェクトストレージ 用に作成されたVPEの横にある「アクション アクションアイコンアクション 」メニューをクリックします。

    または、リスト内のVPE名をクリックし、 [リソースバインディング ]タブをクリックして、既存のリソースバインディングを作成または管理することもできます。

    このVPEでDNS共有がプライマリモードに設定されている場合、このモードではリソースバインディングを作成できないため、[ リソースバインディング ]タブは表示されません。

  3. メニューから 「リソースバインディングの作成」 を選択します。

  4. リソースバインディング名のプレフィックスを入力してください。

    • システムは自動的にプレフィックスに番号を追加します(例: vpe-gtw-resource-01, vpe-gtw-resource-02)。
    • 一度に最大10個のバケットを追加できます。
  5. ビュー アカウントアカウント内で選択 で、インスタンスと1つ以上の Object StorageObject Storage バケットの場所を選択するか、[追加]をクリック CRNを入力してください して手動で追加します。

  6. リストから Object Storage バケツを選択する。 次に、設定を確認し、 「保存」 をクリックしてください。

リソースバインディングが作成されると、指定されたバケット Cloud Object Storage へのトラフィックは、DNS共有VPC内の対応するテナント分離VPEを経由して送信されます。

アクセス権を調整するため、いつでもバインディングを変更または削除できます。

CLIからのリソースバインディングの作成

CLI Cloud Object Storage からサービスのリソースバインディングを作成するには、次の手順に従ってください:

  1. CLI 環境をセットアップします。

  2. CLIでアカウントログインします。 パスワードを入力すると、使用するアカウントとリージョンの入力を求めるプロンプトが表示されます。

    ibmcloud login --sso
    

DNSリソースバインディングを作成するには、以下のコマンドを入力する:

ibmcloud is endpoint-gateway-resource-binding-create ENDPOINT_GATEWAY --name NAME --target CRN

ここで、

ENDPOINT_GATEWAY
このリソースをバインドする予定のVPEの名前です。
-name NAME
このDNSリソースの名前はバインディングですか。
--target CRN
バケット Object Storage のCRNは?

コマンド例

エンドポイントゲートウェイへのリソース my-resource-binding バインディング cli-egw-1 を作成するには:

ibmcloud is endpoint-gateway-resource-binding-create cli-egw-1 --name my-resource-binding --target crn:v1:bluemix:public:cloud-object-storage:global:a/a1234567:504bde7e-28c0-447f-8f75-484c55b5f222:bucket:test-cli

APIを使用したリソースバインディングの作成

API Cloud Object Storage を使用してリソースバインディングを作成するには、次の手順に従ってください:

  1. API 環境をセットアップします。

  2. DNSリソースバインディングを作成するには:

    curl -X POST \
               "__ENDPOINT__/__BASE_PATH__/endpoint_gateways/$endpoint_gateway_id/resource_bindings?__QUERY__" \
               __AUTHORIZATION__ \
               -d '{
                     "name": "my-resource-binding",
                     "target": {
                       "crn":"crn:v1:bluemix:public:cloud-object-storage:global:a/aa2432b1fa4d4ace891e9b80fc104e34:1a0ec336-f391-4091-a6fb-5e084a4c56f4:bucket:bucket-27200-lwx4cfvcue"
                     }
                   }'
    

Terraform によるリソースバインディングの作成

Terraformを使用するには、Terraform CLIをダウンロードし、Provider IBM Cloud プラグインを設定してください。 詳細については、 Terraform の入門ガイドを参照してください。

VPC インフラストラクチャ サービスは、デフォルト us-south で をターゲットとするリージョン固有のエンドポイントを使用します。 VPCが別のリージョンで作成されている場合、 provider.tf provisioning_file内のプロバイダーブロックで適切なリージョンを指定してください。

デフォルト以外の地域をターゲットとする us-south 例を以下に示します。

provider "ibm" {
  region = "eu-de"
}

Terraform Cloud Object Storage を使用してサービスのリソースバインディングを作成するには:

resource "ibm_is_virtual_endpoint_gateway" "iam_vpe" {
  name = "${var.name}-vpe-iam"
  vpc  = ibm_is_vpc.testacc_vpc.id

  target {
    resource_type = var.vpe_target_type
    crn           = var.vpe_target_crn
  }

  dns_resolution_binding_mode = "disabled"
}

resource "ibm_is_virtual_endpoint_gateway_resource_binding" "iam_vpe_rb" {
  name                = "${var.name}-vpe-rb"
  endpoint_gateway_id = ibm_is_virtual_endpoint_gateway.iam_vpe.id

  target {
    crn = var.vpe_rb_target
  }
}

data "ibm_is_virtual_endpoint_gateway" "iam_vpe" {
  name = ibm_is_virtual_endpoint_gateway.iam_vpe.name
}

data "ibm_is_virtual_endpoint_gateways" "all" {}

data "ibm_is_virtual_endpoint_gateway_resource_bindings" "iam_vpe_rbs" {
  endpoint_gateway_id = ibm_is_virtual_endpoint_gateway.iam_vpe.id
}

data "ibm_is_virtual_endpoint_gateway_resource_binding" "iam_vpe_rb" {
  endpoint_gateway_id                     = ibm_is_virtual_endpoint_gateway.iam_vpe.id
  endpoint_gateway_resource_binding_id    = ibm_is_virtual_endpoint_gateway_resource_binding.iam_vpe_rb.endpoint_gateway_resource_binding_id
}