メインコンテンツまでスキップ
非公開のページ
このページは非公開です。 検索対象外となり、このページのリンクに直接アクセスできるユーザーのみに公開されます。

プライベートネットワークゲートウェイを構成します

備考

プライベートプレビュー

プライベートネットワークゲートウェイはプライベートプレビュー段階です。アクセスをリクエストするには、Databricksアカウントチームにお問い合わせください。

この記事では、アカウントREST APIを使ってプライベートネットワークゲートウェイを設定し管理する方法を説明しています。プライベートネットワークゲートウェイとは何か、そしてどのように機能するかについての概要については、 「プライベートネットワークゲートウェイ」を参照してください。

始める前に

プライベートネットワークゲートウェイを作成する前に、次の項目が揃っていることを確認してください:

  • Serverlessコンピュートが有効なワークスペースを少なくとも 1 つ持つ AWS Databricks アカウント。
  • Databricks アカウント管理者の権限。アカウントが Enterprise 価格プランである必要もあります。
  • ターゲットリージョンおよびアベイラビリティゾーン内の専用 VPC サブネット。/28が実用上の最小値です。サブネットには、利用可能な IP アドレスと、目的のリソースへのダウンストリーム接続が必要です。Databricks では、ゲートウェイ専用のサブネットを作成することをお勧めします。
  • Databricksが引き受けることができるIAMロールを作成するための、お客様のAWSアカウントにおける権限。
  • ゲートウェイのイグレスを制御するために、同じ VPC 内にセキュリティグループを作成する機能。
  • ゲートウェイサブネットから到達可能なDNSリゾルバーのIPアドレス。Amazon提供のDNSを使用する場合、これはVPC+2アドレス(例:VPC CIDRが10.0.0.0/16の場合は10.0.0.2)、またはLinkローカルアドレス169.254.169.253となります。

プライベートネットワークゲートウェイは、プライベートプレビュー期間中、一部の AWS リージョンおよび物理アベイラビリティゾーンでのみ利用可能です。デプロイでサポートされているリージョンとアベイラビリティゾーンを確認するには、Databricks アカウントチームにお問い合わせください。ゲートウェイとそのサブネットは、NCC と同じリージョンにある必要があります。

プレビューを有効化

プライベートネットワークゲートウェイのプライベートプレビューへのアクセスをリクエストするには、Databricks アカウントチームに連絡し、以下の情報を提供してください:

  • DatabricksアカウントID。
  • ゲートウェイを使用する予定のリージョン。

プライベートネットワークゲートウェイをセットアップする

すべてのプライベートネットワークゲートウェイ構成には、アカウント REST API を使用します。プライベートプレビュー期間中は、UI または Terraform のサポートはありません。

NCCを作成または選択する

使用するリージョンにNCCがすでにある場合は、このステップをスキップしてください。

  1. アカウント管理者ロールを持つService Principalを使用して、OAuth アクセストークンを取得します。アカウント管理者は、事前にアカウントコンソールでService Principalを作成します。トークンを要求するには、以下を実行します:

    Bash
    curl --location 'https://accounts.cloud.databricks.com/oidc/accounts/{account_id}/v1/token' \
    --header 'Content-Type: application/x-www-form-urlencoded' \
    --header 'Authorization: Basic <base64(client_id:client_secret)>' \
    --data-urlencode 'grant_type=client_credentials' \
    --data-urlencode 'scope=all-apis'
  2. NCCを作成するには、以下を実行します:

    Bash
    curl --request POST \
    'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs' \
    --header 'Authorization: Bearer <access_token>' \
    --header 'Content-Type: application/json' \
    --data '{ "name": "my-ncc", "region": "us-east-1" }'

    レスポンスからnetwork_connectivity_config_idを保存します。

VPC ネットワークの準備

AWSアカウントにおいて、以下を提供してください:

  • ターゲットのアベイラビリティゾーンにある サブネット (使用可能なIPアドレスを含む)。プライベートプレビューでは、1つのアベイラビリティゾーンにつき正確に1つのサブネットのみがサポートされます。
  • ゲートウェイのネットワークインターフェースが到達可能な範囲を制御する セキュリティグループ 。Databricks では、インバウンドルールを設定せず、アウトバウンドルールを宛先ポートに限定することを推奨しています。
  • ゲートウェイサブネットから到達可能な DNS リゾルバー IP アドレス169.254.169.253 の AWS VPC リゾルバー、VPC CIDR ベースに 2 を加えた値(例:10.0.0.0/16 VPC の場合は 10.0.0.2)、Route 53 リゾルバー Endpoint、またはカスタム DNS サーバーを使用できます。

サブネット、セキュリティグループ、およびDNSリゾルバーは、NCCおよびターゲットワークスペースと同じVPCおよびリージョン内にあるか、そこから到達可能である必要があります。

クロスアカウントIAMロールを作成する

  1. AWSアカウント内にIAMロールを作成し、DataBricksがゲートウェイネットワークインターフェースの作成・管理を想定します。

  2. DatabricksアカウントIDを外部IDとして使用し、Databricksロールがこのロールを引き受けられるように信頼ポリシーを設定します:

    JSON
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Principal": {
    "AWS": "arn:aws:iam::414351767826:role/png-management-role"
    },
    "Action": "sts:AssumeRole",
    "Condition": {
    "StringEquals": {
    "sts:ExternalId": "<your_databricks_account_id>"
    }
    }
    }
    ]
    }
  3. 以下のアクセス許可ポリシーをアタッチします。<region><customer_account>、および <vpc_id> を実際の値に置き換えます。

    JSON
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "CreateNicInVpc",
    "Effect": "Allow",
    "Action": "ec2:CreateNetworkInterface",
    "Resource": [
    "arn:aws:ec2:<region>:<customer_account>:network-interface/*",
    "arn:aws:ec2:<region>:<customer_account>:subnet/*",
    "arn:aws:ec2:<region>:<customer_account>:security-group/*"
    ]
    },
    {
    "Sid": "ManageAndCleanupNic",
    "Effect": "Allow",
    "Action": ["ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterface", "ec2:CreateTags"],
    "Resource": "arn:aws:ec2:<region>:<customer_account>:network-interface/*",
    "Condition": { "StringEquals": { "aws:RequestedRegion": "<region>" } }
    },
    {
    "Sid": "CreateGatewayInVpcOnly",
    "Effect": "Allow",
    "Action": "vpc-lattice:CreateResourceGateway",
    "Resource": "arn:aws:vpc-lattice:<region>:<customer_account>:resourcegateway/*",
    "Condition": {
    "StringEquals": {
    "aws:RequestedRegion": "<region>",
    "vpc-lattice:VpcId": "<vpc_id>",
    "aws:RequestTag/Vendor": "Databricks"
    }
    }
    },
    {
    "Sid": "CreateManagedGatewayResources",
    "Effect": "Allow",
    "Action": ["vpc-lattice:CreateResourceConfiguration", "vpc-lattice:TagResource"],
    "Resource": [
    "arn:aws:vpc-lattice:<region>:<customer_account>:resourcegateway/*",
    "arn:aws:vpc-lattice:<region>:<customer_account>:resourceconfiguration/*"
    ],
    "Condition": { "StringEquals": { "aws:RequestedRegion": "<region>", "aws:RequestTag/Vendor": "Databricks" } }
    },
    {
    "Sid": "ManageManagedGatewayResources",
    "Effect": "Allow",
    "Action": [
    "vpc-lattice:GetResourceGateway",
    "vpc-lattice:DeleteResourceGateway",
    "vpc-lattice:GetResourceConfiguration",
    "vpc-lattice:DeleteResourceConfiguration",
    "vpc-lattice:PutResourcePolicy",
    "vpc-lattice:DeleteResourcePolicy"
    ],
    "Resource": [
    "arn:aws:vpc-lattice:<region>:<customer_account>:resourcegateway/*",
    "arn:aws:vpc-lattice:<region>:<customer_account>:resourceconfiguration/*"
    ],
    "Condition": { "StringEquals": { "aws:RequestedRegion": "<region>", "aws:ResourceTag/Vendor": "Databricks" } }
    },
    {
    "Sid": "ListAndDescribeInRegion",
    "Effect": "Allow",
    "Action": [
    "vpc-lattice:GetResourcePolicy",
    "vpc-lattice:ListResourceGateways",
    "vpc-lattice:ListResourceConfigurations",
    "ec2:DescribeNetworkInterfaces",
    "ec2:DescribeVpcs",
    "ec2:DescribeSubnets",
    "ec2:DescribeSecurityGroups",
    "ec2:DescribeAvailabilityZones",
    "ec2:DescribeRouteTables"
    ],
    "Resource": "*",
    "Condition": { "StringEquals": { "aws:RequestedRegion": "<region>" } }
    },
    {
    "Sid": "VpcLatticeServiceLinkedRole",
    "Effect": "Allow",
    "Action": "iam:CreateServiceLinkedRole",
    "Resource": "arn:aws:iam::<customer_account>:role/aws-service-role/vpc-lattice.amazonaws.com/AWSServiceRoleForVpcLattice",
    "Condition": {
    "StringEquals": { "iam:AWSServiceName": "vpc-lattice.amazonaws.com" }
    }
    }
    ]
    }

    Databricks AWSアカウントは 414351767826 です。外部IDは、お客様のDatabricksアカウントIDです。一部のアクションは特定のVPCにスコープを設定できないため、利用可能な最も限定的なスコープはアカウントとリージョンになります。ポリシーを完全に付与します。すべてのステートメントが必要です。これは、ゲートウェイのプロビジョニングと管理のための単一の下位互換性のあるポリシーであるため、ロールを一度設定すれば、ゲートウェイの進化に合わせて更新する必要はありません。

プライベートネットワークゲートウェイを作成する

ゲートウェイを作成するには、NCC 配下の private-network-gateways Endpoint に POST リクエストを送信します。リクエスト本文では、以下のフィールドを指定できます。

  • gateway_name (必須):ゲートウェイのわかりやすい名前。
  • aws_cloud_connection.gateway_subnets (必須): ゲートウェイネットワークインターフェイスが配置されるサブネット。プライベートプレビューでは、サブネットを1つだけ指定できます。
  • aws_cloud_connection.cross_account_role.role_arn (必須):前のステップで作成したIAMロールのARN。
  • aws_cloud_connection.security_group_ids (必須): ゲートウェイのネットワークインターフェースにアタッチされ、イグレスを制御するセキュリティグループ。
  • private_dns_resolvers (必須): VPCネットワーキングの準備時に特定したDNSリゾルバーのIPアドレス。
  • traffic_mode (必須): SPECIFIC_DESTINATIONS または ALL_TRAFFICトラフィックモードを参照してください。
  • destinationstraffic_modeSPECIFIC_DESTINATIONSの場合に必須):ゲートウェイ経由でルーティングするDNS名。

SPECIFIC_DESTINATIONSモードでゲートウェイを作成するには、以下の手順を実行します:

Bash
curl --request POST \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{
"gateway_name": "my-aws-png",
"traffic_mode": "SPECIFIC_DESTINATIONS",
"aws_cloud_connection": {
"gateway_subnets": [{ "subnet_id": "subnet-0abc123def456" }],
"cross_account_role": {
"role_arn": "arn:aws:iam::<customer_account>:role/databricks-png-role"
},
"security_group_ids": ["sg-customer-xyz"]
},
"destinations": [
{ "destination_type": "DNS_NAME", "value": "app.customer.internal" }
],
"private_dns_resolvers": [
{ "resolver_type": "IP_ADDRESS", "value": "10.0.0.2" }
]
}'

ゲートウェイは CREATING 状態で作成されます。Databricks がサブネット内にゲートウェイネットワークインターフェイスを作成すると ESTABLISHED に移行します。これには通常 2 分未満かかります。

ゲートウェイが確立されていることを確認します

ゲートウェイの状態を確認するには、stateESTABLISHEDになるまでGETリクエストを送信します。

Bash
curl --request GET \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}' \
--header 'Authorization: Bearer <access_token>'

続行する前に、stateESTABLISHED であることを確認してください。

ワークスペースに NCC をアタッチする

ワークスペースが既に NCC にアタッチされている場合は、この手順をスキップしてください。NCC はリージョンオブジェクトであり、同じリージョン内のワークスペースにのみアタッチできます。

アカウントコンソールで 「ワークスペース 」に行き、ワークスペースを選択し、「 ネットワーク接続 」を開き、NCCを添付します。ゲートウェイを使用する必要があるワークスペースごとに、この手順を繰り返してください。

アカウント REST API を使用して NCC をアタッチすることもできます:

Bash
curl --request PATCH \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/workspaces/{workspace_id}' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{ "network_connectivity_config_id": "{network_connectivity_config_id}" }'

DNS 構成

ゲートウェイは、private_dns_resolvers で指定したリゾルバーを使用して、構成した宛先のホスト名を解決します。リゾルバーは、ゲートウェイサブネットから到達可能である必要があります。

プライベートリソースが Route 53 プライベートホストゾーンに登録されている場合は、ホスト名が正しく解決されるように、そのゾーンをゲートウェイサブネットを含む VPC に関連付けてください。組み込みの AWS VPC リゾルバーを使用するには、169.254.169.253 または VPC CIDR ベースに 2 を加えた値を指定します。名前が重複するカスタムプライベートゾーンがある場合は、代わりに独自のリゾルバーを使用してください。

ゲートウェイの管理

アカウントREST APIを使用して、ゲートウェイの更新、削除、一覧表示を行うことができます。

ゲートウェイを更新する

PATCHリクエストを使用すると、gateway_namedestinationsprivate_dns_resolvers、およびtraffic_modeをその場で更新できます。update_maskクエリパラメータは必要であり、どのフィールドを更新するかを指定します。traffic_modeALL_TRAFFICに切り替えるときは、同じリクエスト内でdestinationsをクリアしてください。SPECIFIC_DESTINATIONSに切り替える際は、ルーティングする宛先を含めてください。gateway_subnetscross_account_role、またはsecurity_group_idsを変更するには、ゲートウェイを削除して新しく作成してください。

送信先を更新するには、以下を実行します:

Bash
curl --request PATCH \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}?update_mask=destinations' \
--header 'Authorization: Bearer <access_token>' \
--header 'Content-Type: application/json' \
--data '{ "destinations": [ { "destination_type": "DNS_NAME", "value": "app2.customer.internal" } ] }'

ゲートウェイを削除する

警告

ゲートウェイを削除すると、それに依存するプライベートリソースへの接続が切断されます。ゲートウェイを削除する前に、アクティブなワークロードがゲートウェイに依存していないことを確認してください。

ゲートウェイを削除するには、NCC 配下のゲートウェイEndpointに DELETE リクエストを送信します:

Bash
curl --request DELETE \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways/{gateway_id}' \
--header 'Authorization: Bearer <access_token>'

ゲートウェイを一覧表示する

NCC内のプライベートネットワークゲートウェイをリストアップするには、NCCのゲートウェイEndpointにGETリクエストを送信してください:

Bash
curl --request GET \
'https://accounts.cloud.databricks.com/api/2.0/accounts/{account_id}/network-connectivity-configs/{network_connectivity_config_id}/private-network-gateways' \
--header 'Authorization: Bearer <access_token>'

ゲートウェイの状態

ゲートウェイは、以下のいずれかの状態を報告します。

状態

説明

CREATING

Databricksはあなたのサブネットでゲートウェイネットワークインターフェースを作成しています。

ESTABLISHED

ゲートウェイはトラフィックをルーティングする準備ができています。

DELETING

ゲートウェイは削除中です。

FAILED

ゲートウェイをプロビジョニングできませんでした。この状態は終了状態です。サポートされていないリージョンやアベイラビリティゾーンなど、根本的な原因を修正してからゲートウェイを削除し、新しいゲートウェイを作成してください。

状態

説明

CREATING

Databricksはあなたのサブネットでゲートウェイネットワークインターフェースを作成しています。

ESTABLISHED

ゲートウェイはトラフィックをルーティングする準備ができています。

DELETING

ゲートウェイは削除中です。

FAILED

ゲートウェイをプロビジョニングできませんでした。この状態は終了状態です。サポートされていないリージョンやアベイラビリティゾーンなど、根本的な原因を修正してからゲートウェイを削除し、新しいゲートウェイを作成してください。