VPC から Object Storage Service (OSS) などの Alibaba Cloud サービスへ、インターネットを経由せずにプライベートネットワーク経由でアクセスすることで、セキュリティ、ネットワークの安定性、コスト効率が向上します。
プライベートネットワークアクセスでは、すべてのリクエストが Alibaba Cloud 内部ネットワーク内で完結するため、セキュリティの強化、パフォーマンスの安定、コストの削減が実現します。
2 つのソリューションが利用できます:ゲートウェイエンドポイントと PrivateLink です。
仕組み
ゲートウェイエンドポイント | PrivateLink |
ゲートウェイエンドポイントは、VPC が特定の Alibaba Cloud サービスにアクセスするための仮想ゲートウェイとして機能します。 以下の手順では OSS を例として説明します:
| PrivateLink は、VPC とターゲットサービスの間にプライベートトンネルを確立します。 以下の手順では OSS を例として説明します:
|
次の表は、2 つのソリューションを比較したものです。
機能 | ゲートウェイエンドポイント | PrivateLink |
ユースケース | エンドポイントポリシーと OSS バケットポリシーを組み合わせて使用することで、不正アクセスのリスクを軽減し、双方向認証を実装できます:
| VPC から Alibaba Cloud サービスへのプライベートアクセスのための標準ソリューションです。ゲートウェイエンドポイントよりも多くのサービスタイプと高度な機能をサポートします。 |
サポートされるサービスタイプ | 現在は OSS のみをサポートしています。 | 多数の Alibaba Cloud サービスおよびユーザー作成サービス (ISV が提供するサービスを含む) をサポートします。 |
VPC セキュリティ機能 | エンドポイントポリシーのみをサポートします。 | セキュリティグループ、ネットワーク ACL、エンドポイントポリシーをサポートします。 |
ネットワーク機能 | 複雑なネットワーク構成をサポートしていません。Alibaba Cloud サービスの CIDR ブロック (100.x.x.x/8) と競合する可能性があります。 | 複雑なネットワーク構成をサポートします。VPC ピアリング、CEN、Express Connect、VPN ゲートウェイと互換性があり、クロスリージョンおよびハイブリッドクラウド接続が可能です。 |
運用管理機能 | なし | 監査およびトラブルシューティングのためのフローログをサポートします。 |
料金 | 無料です。 | 料金には、インスタンス料金とデータ転送料金が含まれます。 ユーザー作成サービスの場合、コンシューマーまたはプロバイダーのどちらが支払うかを選択できます。 |
ゲートウェイエンドポイント
エンドポイントポリシーと OSS バケットポリシーを組み合わせて使用することで、不正アクセスのリスクを軽減し、双方向認証を実装できます:
送信元制御:VPC は指定されたバケットのみにアクセスできます。
宛先制御:OSS バケットは指定された VPC からのみアクセスできます。
コンソール
ゲートウェイエンドポイントの作成とポリシーの設定
ゲートウェイエンドポイントの VPC、承認されたバケット、アクセスするユーザーは、それぞれ異なる Alibaba Cloud アカウントに属することができます。
ゲートウェイエンドポイントは一部のリージョンでのみサポートされています。
ゲートウェイエンドポイントを作成し、エンドポイントポリシーを設定します。
VPC コンソール - ゲートウェイエンドポイント ページに移動し、エンドポイントの作成 をクリックします。
リージョンを選択し、エンドポイントの名前を指定します。エンドポイントタイプは ゲートウェイ のままにします。
タイプ には Alibaba Cloud サービス を選択し、次に Object Storage Service (OSS) のエンドポイントサービスを選択します。
VPC を選択し、ルートテーブルを選択します。
ゲートウェイエンドポイントが作成されると、システムは選択されたルートテーブルにカスタムルートエントリを追加します。宛先は、リージョン内の OSS の VIP CIDR ブロックを含むシステムプレフィックスリストであり、ネクストホップはゲートウェイエンドポイントです。
エンドポイントポリシーを設定します。構文は Resource Access Management (RAM) のアクセス権限ポリシー言語と同じです。
エンドポイントが作成されると、関連付けられたルートテーブルのカスタムルートエントリ内に、システムによって追加されたルートエントリが表示されます。ネクストホップはゲートウェイエンドポイントを指しています。
OSS のバケットポリシーを設定します。
[OSS コンソール - バケット] ページに移動し、承認するバケットの名前をクリックします。
左側メニューで、[権限管理] > [バケットポリシー] を選択します。[構文による追加] をクリックし、[編集] をクリックします。
バケットポリシーを設定します。構文は Resource Access Management (RAM) のアクセス権限ポリシー言語と同じです。
ポリシーの設定後、[保存] をクリックします。
アクセスポリシーを検証します。
注:RAM ユーザーには、関連する OSS バケットに対する権限が必要です。そうでない場合、アクセスが失敗する可能性があります。
承認されたアカウントから承認された VPC 内の承認されたバケットへのアクセスは成功します。
アカウント、VPC、またはバケットが承認されていない場合、アクセスは失敗します。
承認ポリシーの変更
承認ポリシーを変更して、許可される VPC、バケット、またはアカウントを調整します。
承認された VPC を調整するには:[OSS コンソール - バケット] ページに移動し、対象のバケットの名前をクリックし、左側メニューから [権限管理] > [バケットポリシー] を選択します。既存のポリシーの
Conditionフィールドを変更して、バケットにアクセスできる VPC を追加または削除します。承認されたバケットを調整するには:
VPC コンソール - ゲートウェイエンドポイントページに移動し、ターゲットゲートウェイエンドポイントインスタンスの ID をクリックして、アクセスポリシー タブを選択します。既存のポリシーの
Resourceフィールドを変更して、VPC がアクセスできるバケットを追加または削除します。[OSS コンソール - バケット] ページに移動し、対象のバケットの名前をクリックし、左側メニューから [権限管理] > [バケットポリシー] を選択します。既存のポリシーの
Resourceフィールドを変更して、アクセス可能なバケットリソースを追加または削除します。複数のバケットが関係する場合は、各バケットに対してこの操作を実行する必要があります。
承認されたアカウントを調整するには:
注:RAM ユーザーには、関連する OSS バケットに対する権限が必要です。そうでない場合、アクセスが失敗する可能性があります。
VPC コンソール - ゲートウェイエンドポイント ページに移動し、対象のゲートウェイエンドポイントインスタンスの ID をクリックして、アクセスポリシー タブを選択します。既存のポリシーの
Principalフィールドを変更して、VPC 内のバケットにアクセスできるアカウントを追加または削除します。[OSS コンソール - バケット] ページに移動し、対象のバケットの名前をクリックし、左側メニューから [権限管理] > [バケットポリシー] を選択します。既存のポリシーの
Principalフィールドを変更して、VPC 内のバケットにアクセスできるアカウントを追加または削除します。複数のバケットが関係する場合は、各バケットに対してこの操作を実行する必要があります。
ルートテーブルの関連付けまたは関連付け解除
ルートテーブルを関連付けまたは関連付け解除して、ゲートウェイエンドポイントを介して Alibaba Cloud サービスにアクセスできる vSwitch を制御します。
エンドポイントポリシーは、ルートテーブルの関連付けステータスに関係なく、VPC 内の OSS へのすべてのトラフィックに適用されます。ルートテーブルの関連付けを解除すると、ルートエントリが削除されるだけで、ポリシーは無効になりません。ポリシーを無効にするには、エンドポイントポリシーを変更または削除してください。
[VPC コンソール - ゲートウェイエンドポイント] ページに移動し、対象のゲートウェイエンドポイントインスタンスの ID をクリックします。
関連付けられたルートテーブル タブで:
新しいルートテーブルを関連付けるには、ルートテーブル をクリックします。関連付けが完了すると、関連付けられたルートテーブルのカスタムルートエントリで、ネクストホップがゲートウェイエンドポイントを指すシステム追加のルートエントリを確認できます。
既存のルートテーブルの関連付けを解除するには、対象のルートテーブルの横にある関連付けの解除をクリックします。関連付けを解除すると、システムによって追加されたルートエントリは自動的に削除されます。
ゲートウェイエンドポイントの削除
ゲートウェイエンドポイントを削除するには、まず関連付けられているすべてのルートテーブルの関連付けを解除する必要があります。
関連付けられているすべてのルートテーブルの関連付けを解除します。
VPC コンソール - ゲートウェイエンドポイント ページに移動し、対象のゲートウェイエンドポイントインスタンスの右側にある削除をクリックします。
(オプション) バケットポリシーは有効なままであるため、他の VPC からのバケットへのアクセスは制限されたままです。調整するには、[OSS コンソール - バケット] ページに移動し、対象のバケットをクリックして、[権限管理] > [バケットポリシー] を選択します。指定された VPC からのアクセスのみを許可するポリシーを調整または削除します。
API
ゲートウェイエンドポイント:
ゲートウェイエンドポイントを作成してエンドポイントポリシーを設定するには、CreateVpcGatewayEndpoint API を呼び出します。
この API を呼び出す際は、
ServiceNameパラメータを指定する必要があります。利用可能なエンドポイントサービスを照会するには、ListVpcEndpointServicesByEndUser API を呼び出すことができます。PolicyDocumentパラメータは、エンドポイントポリシーを設定するために使用されます。構文は Resource Access Management (RAM) のアクセス権限ポリシー言語と同じです。
ゲートウェイエンドポイントポリシーを変更するには:UpdateVpcGatewayEndpointAttribute API を呼び出し、
PolicyDocumentパラメータを指定します。ルートテーブルを関連付けるには:AssociateRouteTablesWithVpcGatewayEndpoint API を呼び出します。
ルートテーブルの関連付けを解除するには:DissociateRouteTablesFromVpcGatewayEndpoint API を呼び出します。
ゲートウェイエンドポイントを削除するには:DeleteVpcGatewayEndpoint API を呼び出します。
OSS バケット:
OSS のバケットポリシーを設定するには:PutBucketPolicy API を呼び出します。
バケットポリシーを変更するには:PutBucketPolicy API を呼び出し、JSON 形式でアクセス権限ポリシーを指定します。
バケットポリシーを削除するには:DeleteBucketPolicy API を呼び出します。
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 の ID。
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": ["1746xxxxxx"]
}
]
}
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" # 実際のアカウント 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 の課金については、「PrivateLink の課金」をご参照ください。
サポートされているリージョン
エリア | リージョン |
アジアパシフィック - 中国 | China (Hangzhou)、China (Shanghai)、China (Qingdao)、China (Beijing)、China (Zhangjiakou)、China (Hohhot)、China (Shenzhen)、China (Ulanqab)、China (Heyuan)、China (Guangzhou)、China (Chengdu)、および China (Hong Kong) |
その他アジアパシフィック | Japan (Tokyo)、Singapore、Malaysia (Kuala Lumpur)、Indonesia (Jakarta)、Malaysia (Johor)、および South Korea (Seoul) |
ヨーロッパとアメリカ | Germany (Frankfurt)、UK (London)、US (Silicon Valley)、および US (Virginia) |
中東 | UAE (Dubai) |
PrivateLink がサポートされているリージョンとゾーンについては、「PrivateLink をサポートするリージョンとゾーン」をご参照ください。
クォータ
ゲートウェイエンドポイントのクォータ:
1 つの VPC は、Alibaba Cloud サービスごとに 1 つのゲートウェイエンドポイントのみに関連付けることができ、1 つのルートテーブルは 1 つのゲートウェイエンドポイントのみに関連付けることができます。
1 つのゲートウェイエンドポイントは、複数の VPC ルートテーブルに関連付けることができます。
PrivateLink のクォータについては、「サービスクォータ」をご参照ください。