仮想プライベートクラウド (VPC) 内のインスタンスから、Object Storage Service (OSS) などの Alibaba Cloud サービスにインターネット経由でアクセスすると、セキュリティリスクが生じ、ネットワーク品質が不安定になり、追加のインターネットトラフィック料金が発生する可能性があります。
これらの問題を解決するために、Alibaba Cloud では、プライベートネットワーク経由で VPC から Alibaba Cloud サービスにアクセスできます。この方法により、アクセスリクエストは Alibaba Cloud 内部ネットワーク内で送信されるため、より高いセキュリティ、より安定したネットワークパフォーマンス、およびより優れたコスト管理が保証されます。
このトピックでは、プライベートネットワーク経由で VPC から Alibaba Cloud サービスにアクセスするための 2 つの一般的なソリューション、ゲートウェイエンドポイントと PrivateLink について説明します。
仕組み
ゲートウェイエンドポイント | PrivateLink |
ゲートウェイエンドポイントは、VPC が特定の Alibaba Cloud サービスにアクセスするために使用する仮想ゲートウェイです。 OSS を例に取ります。次のプロシージャは、ゲートウェイエンドポイントの仕組みを説明しています。
| PrivateLink は、VPC と宛先サービスの間にプライベートトンネルを確立します。 次のプロシージャでは OSS を例として使用します。
|
次の表は、2 つのソリューションを比較して、情報に基づいた意思決定を支援します。
属性 | ゲートウェイエンドポイント | PrivateLink |
ユースケース | ゲートウェイエンドポイントのエンドポイントポリシーと OSS のバケットポリシーを使用して、不正アクセスのリスクを軽減し、双方向のアクセス制御を実装します:
| プライベートネットワーク経由で VPC から Alibaba Cloud サービスに安全にアクセスするための標準ソリューション。PrivateLink は、ゲートウェイエンドポイントよりも多くの種類の Alibaba Cloud サービスをサポートし、より高度な機能を提供します。 |
適用可能なサービスタイプ | 現在、ゲートウェイエンドポイントは OSS のみをサポートしています。 | PrivateLink は、広範な Alibaba Cloud サービスおよび独立系ソフトウェアベンダー (ISV) が提供するサービスを含むユーザー作成サービスをサポートしています。 |
VPC 側のセキュリティ機能 | エンドポイントポリシーのみがサポートされています。 | セキュリティグループ、ネットワーク ACL、およびエンドポイントポリシーがサポートされています。 |
ネットワーク機能 | 複雑なネットワークはサポートされていません。Alibaba Cloud サービス (100.x.x.x/8) の CIDR ブロックと IP アドレスの競合が発生する可能性があります。 | 複雑なネットワークがサポートされています。PrivateLink を VPC ピアリング接続、Cloud Enterprise Network (CEN)、Express Connect 回線、または VPN ゲートウェイと併用して、クロスリージョンおよびハイブリッドクラウドネットワークを実装できます。 |
O&M 機能 | なし | フローログにより、監査とトラブルシューティングが簡素化されます。 |
料金 | 無料 | インスタンス料金とデータ転送料金が適用されます。 ユーザー作成サービスの場合、サービス利用者またはサービスプロバイダーのどちらが料金を支払うかを選択できます。 |
ゲートウェイエンドポイント
ゲートウェイエンドポイントのエンドポイントポリシーと OSS のバケットポリシーを使用して、不正アクセスのリスクを軽減し、双方向のアクセス制御を実装します:
ソース制御: VPC は指定されたバケットへのみアクセスが許可されます。
宛先制御: OSS バケットは指定された VPC からのアクセスのみを許可します。
コンソール
ゲートウェイエンドポイントの作成と権限付与ポリシーの設定
ゲートウェイエンドポイントが作成される VPC、承認されたバケット、および VPC から OSS にアクセスするユーザーは、異なる Alibaba Cloud アカウントに属することができます。
ゲートウェイエンドポイントは一部のリージョンでのみサポートされていることに注意してください。
ゲートウェイエンドポイントを作成し、エンドポイントポリシーを設定します。
VPC コンソールのゲートウェイエンドポイントページで、[エンドポイントの作成] をクリックします。
リージョンを選択し、エンドポイント名を入力し、エンドポイントタイプを [ゲートウェイエンドポイント] に設定します。
[エンドポイントサービス] で [Alibaba Cloud サービス] を選択し、次に Object Storage Service (OSS) を選択します。
VPC を選択し、ルートテーブルを選択します。
ゲートウェイエンドポイントが作成されると、システムは選択されたルートテーブルにカスタムルートエントリーを自動的に追加します。ルートエントリーの宛先 CIDR ブロックは、リージョン内の VPC CIDR ブロックを含むシステムプレフィックスリストであり、ネクストホップは作成されたゲートウェイエンドポイントです。
エンドポイントポリシーを設定します。構文は、Resource Access Management (RAM) の権限ポリシー言語と同じです。
エンドポイントが作成されると、関連付けられたルートテーブルのカスタムルートエントリーにシステムが追加したルートエントリーが見つかります。このルートエントリーのネクストホップはゲートウェイエンドポイントです。
OSS のバケットポリシーを設定します。
OSS コンソールのバケットページに移動し、ターゲットバケットの名前をクリックします。
左のナビゲーションウィンドウで、[権限管理] > [バケットポリシー] を選択し、[構文で追加] をクリックしてから、[編集] をクリックします。
バケット権限付与ポリシーを設定します。構文は、Resource Access Management (RAM) のアクセスポリシー言語と同じです。
ポリシーを設定した後、[保存] をクリックします。
アクセスポリシーの検証
注: RAM ユーザーが OSS にアクセスする場合、指定された OSS バケットで操作を実行するために必要な権限を RAM ユーザーに付与する必要があります。そうしないと、アクセスリクエストは失敗します。
承認されたアカウントを使用して、承認された VPC から承認されたバケットにアクセスすると、アクセスリクエストは成功します。
アカウント、VPC、またはバケットが承認されていない場合、アクセスリクエストは失敗します。
アクセスポリシーの変更
アクセスポリシーを変更して、承認された VPC、バケット、またはアカウントの範囲を調整できます。
バケットへのアクセスが承認されている VPC を調整するには、OSS コンソール - バケットページに移動し、ターゲットバケットの名前をクリックします。左のナビゲーションウィンドウで、[権限管理] > [バケットポリシー] を選択します。権限付与ポリシーの
Conditionフィールドを変更して、VPC を追加または削除します。承認されたバケットの範囲を調整するには:
VPC コンソール - ゲートウェイエンドポイントページに移動し、宛先ゲートウェイエンドポイントの ID をクリックします。[エンドポイントポリシー] タブで、権限付与ポリシーの
Resourceフィールドを変更して、VPC がアクセスできるバケットを制御します。OSS コンソール - バケットページに移動し、ターゲットバケットの名前をクリックします。左のナビゲーションウィンドウで、[権限管理] > [バケットポリシー] を選択します。既存の権限付与ポリシーの
Resourceフィールドを変更して、バケットリソースを追加または削除します。複数のバケットが関与している場合は、各バケットに対してこの操作を実行する必要があります。
承認されたアカウントの範囲を調整するには:
注: RAM ユーザーが OSS にアクセスする場合、指定された OSS バケットで操作を実行するために必要な権限を RAM ユーザーに付与する必要があります。そうしないと、アクセスリクエストは失敗します。
VPC コンソール - ゲートウェイエンドポイントページに移動し、ターゲットゲートウェイエンドポイントインスタンス ID をクリックします。[エンドポイントポリシー] タブで、権限付与ポリシーの
Principalフィールドを変更して、VPC からバケットへのアクセスが許可されているアカウントを追加または削除します。OSS コンソール - バケットに移動し、宛先バケットの名前をクリックします。左側のナビゲーションウィンドウで、[権限管理] > [バケットポリシー] を選択します。既存の権限付与ポリシーの
Principalフィールドを変更して、VPC からバケットにアクセスできるアカウントを追加または削除します。複数のバケットを設定している場合は、各バケットに対してこの操作を繰り返す必要があります。
ルートテーブルの関連付けまたは関連付け解除
ゲートウェイエンドポイントをルートテーブルに関連付けたり、ルートテーブルから関連付けを解除したりして、VPC 内のどの vSwitch がゲートウェイエンドポイントを介して Alibaba Cloud サービスにアクセスできるかを制御できます。
VPC コンソール - ゲートウェイエンドポイントページに移動し、ターゲットゲートウェイエンドポイントインスタンス ID をクリックします。
[関連付けられたルートテーブル] タブでは:
新しいルートテーブルを関連付けるには、[ルートテーブルの関連付け] をクリックします。ルートテーブルが関連付けられると、システムは自動的にそのカスタムルートエントリーにルートを追加します。このルートのネクストホップはゲートウェイエンドポイントを指します。
ルートテーブルの関連付けを解除するには、ルートテーブルの右側にある [関連付け解除] をクリックします。ルートテーブルの関連付けが解除されると、システムは対応するシステムルートを自動的に削除します。
ゲートウェイエンドポイントの削除
ゲートウェイエンドポイントを削除する前に、関連付けられているすべてのルートテーブルの関連付けを解除する必要があります。
関連付けられているすべてのルートテーブルの関連付けを解除します。
VPC コンソールのVPC コンソール - ゲートウェイエンドポイントに移動し、ターゲットゲートウェイエンドポイントインスタンスを見つけて、[削除] をクリックします。
(オプション) バケットポリシーは引き続き有効であり、他の VPC がバケットにアクセスするのを妨げる可能性があります。ポリシーを調整するには、OSS コンソール - バケットに移動し、ターゲットバケットの名前をクリックし、左のナビゲーションウィンドウで [権限管理] > [バケットポリシー] を選択して、特定の VPC へのアクセスを制限するポリシーを変更または削除します。
API
ゲートウェイエンドポイント:
ゲートウェイエンドポイントを作成し、エンドポイントポリシーを設定するには、CreateVpcGatewayEndpoint 操作を呼び出します。
この操作を呼び出すときは、
ServiceNameパラメーターを指定する必要があります。ListVpcEndpointServicesByEndUser 操作を呼び出して、利用可能なエンドポイントサービスをクエリできます。PolicyDocumentフィールドは、エンドポイントポリシーを設定するために使用されます。構文は、Resource Access Management (RAM) のアクセスポリシー言語と同じです。
ゲートウェイエンドポイントポリシーを変更するには、UpdateVpcGatewayEndpointAttribute 操作を呼び出し、
PolicyDocumentパラメーターを指定します。ルートテーブルを関連付けるには、AssociateRouteTablesWithVpcGatewayEndpoint 操作を呼び出します。
ルートテーブルの関連付けを解除するには、DissociateRouteTablesFromVpcGatewayEndpoint 操作を呼び出します。
ゲートウェイエンドポイントを削除するには、DeleteVpcGatewayEndpoint 操作を呼び出します。
OSS バケット:
OSS のバケットポリシーを設定するには、PutBucketPolicy 操作を呼び出します。
バケットポリシーを変更するには、PutBucketPolicy 操作を呼び出し、JSON 形式でアクセスポリシーを指定します。
バケットポリシーを削除するには、DeleteBucketPolicy 操作を呼び出します。
Terraform
ゲートウェイエンドポイントを設定します:
リソース: alicloud_vpc_gateway_endpoint
注: ゲートウェイエンドポイントを削除する前に、関連付けられているすべてのルートテーブルの関連付けを解除する必要があります。
provider "alicloud" {
region = "cn-hangzhou"
}
resource "alicloud_vpc_gateway_endpoint" "default" {
gateway_endpoint_name = "gateway-endpoint-name" # ゲートウェイエンドポイントの名前。
service_name = "com.aliyun.cn-hangzhou.oss" # OSS サービスの名前。
vpc_id = "vpc-bp******" # ゲートウェイエンドポイントが属する VPC。
route_tables = ["vtb-bp******","vtb-bp******"] # 関連付けられたルートテーブルの ID。
# エンドポイントポリシー。
policy_document = <<EOF
{
"Version": "1",
"Statement":
[
{
"Effect": "Allow",
"Action": "oss:*",
"Resource": ["acs:oss:*:*:examplebucket","acs:oss:*:*:examplebucket/*"],
"Principal": ["1746******"]
}
]
}
EOF
}OSS のバケットポリシーを設定します:
リソース: alicloud_oss_bucket_policy
provider "alicloud" {
region = "cn-hangzhou"
}
resource "alicloud_oss_bucket_policy" "default" {
bucket = "examplebucket" # バケットの名前。
policy = jsonencode({
Version = "1"
Statement = [
{
Effect = "Deny"
Action = [
"oss:ListObjects",
"oss:GetObject",
"oss:PutObject",
"oss:DeleteObject"
]
Principal = [
"*"
]
Resource = [
"acs:oss:*:*:examplebucket",
"acs:oss:*:*:examplebucket/*"
]
Condition = {
StringNotEquals = {
"acs:SourceVpc" = [
"vpc-bp******" # 値を実際の VPC ID に置き換えます。
]
}
}
},{
Effect = "Allow"
Action = [
"oss:*"
]
Principal = [
"1746xxxxxx" # 値を実際の Alibaba Cloud アカウント ID に置き換えます。
]
Resource = [
"acs:oss:*:*:examplebucket",
"acs:oss:*:*:examplebucket/*"
]
Condition = {
StringEquals = {
"acs:SourceVpc" = [
"vpc-bp******" # 値を実際の VPC ID に置き換えます。
]
}
}
}
]
})
} PrivateLink
詳細については、次の PrivateLink のトピックをご参照ください。
Alibaba Cloud サービスへのアクセス: PrivateLink を使用してプライベートネットワーク経由で OSS リソースにアクセスする。
ユーザー作成サービス (ISV が提供するサービスを含む) へのアクセス: PrivateLink を使用して別の VPC の ALB インスタンスにアクセスするおよびPrivateLink を使用して別の VPC の NLB インスタンスにアクセスする。
仮想ネットワークデバイスへのアクセス: GWLB を使用して IPv4 トラフィックのセキュリティ検査を迅速に設定する。
詳細情報
課金
ゲートウェイエンドポイントは無料です。
詳細については、「PrivateLink の課金」をご参照ください。
サポートされているリージョン
エリア | リージョン |
アジアパシフィック - 中国 | 中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (フフホト)、中国 (深セン)、中国 (ウランチャブ)、中国 (河源)、中国 (広州)、中国 (成都)、および中国 (香港) |
アジアパシフィック - その他 | 日本 (東京)、シンガポール、マレーシア (クアラルンプール)、およびインドネシア (ジャカルタ) |
ヨーロッパ & アメリカ | ドイツ (フランクフルト)、英国 (ロンドン)、米国 (シリコンバレー)、および米国 (バージニア) |
中東 | UAE (ドバイ) |
詳細については、「PrivateLink をサポートするリージョンとゾーン」をご参照ください。
クォータ
ゲートウェイエンドポイントのクォータ:
VPC は、特定の Alibaba Cloud サービスに対して 1 つのゲートウェイエンドポイントにのみ関連付けることができます。VPC ルートテーブルは、1 つのゲートウェイエンドポイントにのみ関連付けることができます。
ゲートウェイエンドポイントは、複数の VPC ルートテーブルに関連付けることができます。
PrivateLink のクォータの詳細については、「サービスのクォータ」をご参照ください。