virtual private cloud (VPC) 内のインスタンスから、Object Storage Service (OSS) などの Alibaba Cloud サービスにインターネット経由でアクセスすると、セキュリティリスク、ネットワークの安定性の低下、インターネットトラフィック料金の増加といった問題が発生する可能性があります。
VPC からプライベートネットワーク経由で Alibaba Cloud サービスにアクセスすることで、これらの問題は解決されます。トラフィックはプライベートに保たれるため、セキュリティが向上し、ネットワークパフォーマンスが安定し、コストの管理に役立ちます。
このトピックでは、VPC からプライベートネットワーク経由で Alibaba Cloud サービスにアクセスする 2 つの方法、ゲートウェイエンドポイントと PrivateLink について説明します。
仕組み
ゲートウェイエンドポイント | PrivateLink |
ゲートウェイエンドポイントは、VPC が特定の Alibaba Cloud サービスにアクセスするために使用する仮想ゲートウェイのように機能します。 以下のプロセスでは、OSS を例にその仕組みを説明します。
| PrivateLink は、VPC と宛先サービス間のプライベートトンネルのように機能します。 プロセスは次のとおりです。
|
以下の表を参照して、適切なサービスを選択してください。
属性 | ゲートウェイエンドポイント | PrivateLink |
ユースケース | エンドポイントポリシーと OSS バケットポリシーを併用して、アクセスの制御を実装し、不正アクセスを削減します。
| VPC からプライベートネットワーク経由で Alibaba Cloud サービスに安全にアクセスするための標準的なソリューションです。多様な Alibaba Cloud サービスと高度な機能をサポートします。 |
対象サービス | 現在、OSS のみをサポートしています。 | 幅広い Alibaba Cloud サービスと、独立系ソフトウェアベンダー (ISV) が提供するサービスを含むユーザー作成サービスをサポートします。 |
VPC セキュリティ | エンドポイントポリシーのみ。 | セキュリティグループ、ネットワーク ACL、およびエンドポイントポリシー。 |
ネットワーキング | 複雑なネットワーキングシナリオはサポートされていません。Alibaba Cloud サービスの CIDR ブロック (100.x.x.x/8) と IP アドレスの競合が発生する可能性があります。 | 複雑なネットワーキングがサポートされています。PrivateLink を VPC ピアリング接続、Cloud Enterprise Network (CEN)、Express Connect 回線、または VPN ゲートウェイと組み合わせて、リージョン間およびハイブリッドクラウドのネットワーキングを実現します。 |
運用保守 (O&M) | なし | フローログは監査とトラブルシューティングに利用できます。 |
料金 | 無料 | インスタンス料金とデータ転送料金が適用されます。 ユーザー作成サービスの場合、サービス利用者またはサービスプロバイダーのどちらが料金を支払うかを選択できます。 |
ゲートウェイエンドポイント
エンドポイントポリシーと OSS バケットポリシーを併用して、アクセスの制御を実装し、不正アクセスを削減します。
送信元コントロール:VPC は指定されたバケットへのみアクセスが許可されます。
宛先コントロール:OSS バケットは指定された VPC からのみアクセスできます。
コンソール
ゲートウェイエンドポイントの作成とポリシーの設定
ゲートウェイエンドポイントを作成する VPC、認可されたバケット、および VPC から OSS にアクセスするユーザーは、それぞれ異なる Alibaba Cloud アカウントに属することができます。
ゲートウェイエンドポイントは一部のリージョンでのみサポートされています。
ゲートウェイエンドポイントを作成し、エンドポイントポリシーを設定します。
VPC コンソール - ゲートウェイエンドポイントで、エンドポイントの作成 をクリックします。
リージョンを選択し、エンドポイント名を入力し、エンドポイントタイプを [ゲートウェイエンドポイント] に設定します。
エンドポイントサービス で、Alibaba Cloud が提供するワンパーティサービス を選択し、OSS を選択します。
VPC を選択し、ルートテーブルを選択します。
作成後、システムはそのルートテーブルに、OSS リージョン VIP CIDR を含むシステムプレフィックスリストを指すカスタムルートを追加します。ネクストホップはゲートウェイエンドポイントです。
エンドポイントポリシーを設定します。構文は、Resource Access Management (RAM) の権限ポリシー言語と同じです。
エンドポイントが作成されると、関連付けられたルートテーブルのカスタムルートエントリに、システムが追加したルートエントリが見つかります。ネクストホップはゲートウェイエンドポイントです。
OSS のバケットポリシーを設定します。
OSS コンソール - バケットに移動し、対象のバケット名をクリックします。
左側のナビゲーションウィンドウで、[権限制御] > [バケットポリシー] を選択し、[構文で追加] をクリックしてから、[編集] をクリックします。
バケットポリシーを設定します。構文は 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フィールドは、エンドポイントポリシーを設定するために使用されます。構文はアクセスポリシー言語と同じです。
ゲートウェイエンドポイントポリシーを変更するには、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 をサポートするリージョンとゾーン」をご参照ください。
クォータ
ゲートウェイエンドポイントのクォータ:
1 つの VPC は、1 つの Alibaba Cloud サービスに対して 1 つのゲートウェイエンドポイントにのみ関連付けることができます。1 つの VPC ルートテーブルは、1 つのゲートウェイエンドポイントにのみ関連付けることができます。
1 つのゲートウェイエンドポイントは、複数の VPC ルートテーブルに関連付けることができます。
PrivateLink のクォータの詳細については、「サービスクォータ」をご参照ください。