このページでは、バケット IP フィルタリング ルールを作成する方法について説明します。バケット IP フィルタリングを有効にすると、バケット IP フィルタリング ルールで指定された IP アドレスと照らし合わせて受信リクエストを調べ、バケットへのアクセスを制御できます。詳細については、バケット IP フィルタリングをご覧ください。
必要なロール
バケット IP フィルタリング ルールの作成に必要な権限を取得するには、バケットに対するストレージ管理者(roles/storage.admin
)ロールを付与するよう管理者に依頼してください。このロールには、バケット IP フィルタリング ルールの作成に必要な権限が含まれています。
必要な権限を正確に確認するには、[必要な権限] セクションを開きます。
必要な権限
storage.buckets.create
storage.buckets.setIpFilter
カスタムロールを使用して、これらの権限を取得することもできます。他の事前定義ロールでこれらの権限を取得することもできます。どのロールがどの権限に関連付けられているかを確認するには、Cloud Storage に適用される IAM のロールをご覧ください。
バケットに対してロールを付与する手順については、バケットで IAM を使用するをご覧ください。
バケットの IP フィルタリング ルールを作成する
コマンドライン
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
受信リクエストのルールを定義する JSON ファイルを作成します。バケット IP フィルタリング ルールの構造化方法の例については、バケット IP フィルタリング構成をご覧ください。
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": [RANGE_CIDR, ... ] }, "vpcNetworkSources": [ {"network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": [RANGE_CIDR, ... ] }, ... ] }
ここで
mode
は、バケット IP フィルタリング構成のモードです。有効な値はEnabled
とDisabled
です。Enabled
に設定すると、IP フィルタリング ルールがバケットに適用されます。バケットへの受信リクエストは、これらのルールに対して評価されます。Disabled
に設定すると、受信したすべてのリクエストがバケットにアクセスできます。RANGE_CIDR は、バケットへのアクセスが許可されているパブリック ネットワークの IPv4 または IPv6 アドレス範囲です。1 つ以上のアドレス範囲をリストとして入力できます。
PROJECT_ID
は、Virtual Private Cloud(VPC)ネットワークが存在するプロジェクト ID です。複数の VPC ネットワークを構成するには、各ネットワークが配置されているプロジェクトを指定する必要があります。NETWORK_NAME
は、バケットへのアクセスが許可されている VPC ネットワークの名前です。複数の VPC ネットワークを構成するには、各ネットワークの名前を指定する必要があります。
IP フィルタリング ルールを含むバケットを作成するには、開発環境で
gcloud alpha storage buckets create
コマンドを実行します。gcloud alpha storage buckets create gs://BUCKET_NAME --ip-filter-file=IP_FILTER_CONFIG_FILE
ここで
BUCKET_NAME
は、バケットに付ける名前で、命名要件の対象となります。例:my-bucket
IP_FILTER_CONFIG_FILE
は、受信リクエストのルールを定義する JSON ファイルです。
REST API
JSON API
gcloud CLI のインストールと初期化を行います。これにより、
Authorization
ヘッダーのアクセス トークンを生成できます。バケットの設定を含む JSON ファイルを作成します。このファイルには、バケットの
name
構成フィールドとipFilter
構成フィールドを含める必要があります。バケット IP フィルタリング ルールの構造化方法の例については、 バケット IP フィルタリング構成をご覧ください。{ "name": "BUCKET_NAME" "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": [RANGE_CIDR, ... ] }, "vpcNetworkSources": [ {"network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": [RANGE_CIDR, ... ] }, ... ] } }
ここで
mode
は、IP フィルタ構成の状態です。有効な値はEnabled
とDisabled
です。Enabled
に設定すると、IP フィルタリング ルールがバケットに適用され、バケットへのすべての受信リクエストがこれらのルールに対して評価されます。Disabled
に設定すると、必要な IAM 権限がある場合、受信したすべてのリクエストが評価なしでバケットとそのデータにアクセスできます。バケット IP フィルタリング ルールを安全に有効にするには、まずmode
をDisabled
に設定してルールを構成し、リクエストをすぐにブロックせずにルールを追加および調整できるようにします。ルールが正しく定義されていることを確認したら、mode
をEnabled
に更新して、バケット IP フィルタリングを有効にします。RANGE_CIDR は、バケットへのアクセスが許可されているパブリック ネットワークの IPv4 または IPv6 アドレス範囲です。1 つ以上のアドレス範囲をリストとして入力できます。
PROJECT_ID
は、VPC ネットワークが存在するプロジェクト ID です。複数の VPC ネットワークを構成するには、各ネットワークが配置されているプロジェクトを指定する必要があります。NETWORK_NAME
は、バケットへのアクセスが許可されている VPC ネットワークの名前です。複数の VPC ネットワークを構成するには、各ネットワークの名前を指定する必要があります。
cURL
を使用して POST bucket リクエストで JSON API を呼び出します。curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b?project=PROJECT_IDENTIFIER&projection=full"
ここで
JSON_FILE_NAME
は、バケットの設定を含む JSON ファイルの名前です。PROJECT_IDENTIFIER
は、バケットが関連付けられているプロジェクトの ID または番号です。(例:my-project
)です。
バケットの IP フィルタリング構成
このセクションでは、Cloud Storage バケットへのアクセスを制御するバケット IP フィルタリング JSON ファイル構成の例を示します。受信リクエストへのアクセス権は、次のいずれかの例を使用して付与できます。
任意のパブリック IP アドレス(IPv4 または IPv6):
次の構成では、任意のパブリック IPv4 または IPv6 アドレスへのアクセスが許可されますが、任意の VPC からのトラフィックはブロックされます。
{ "ipFilterConfig": { "mode": "Enabled" "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] } } }
特定のパブリック IP 範囲:
次の構成例では、
192.0.2.0/24
パブリック IPv4 アドレス範囲へのアクセスを許可しますが、任意の VPC からのトラフィックをブロックします。{ "ipFilterConfig": { "mode": "Enabled" "publicNetworkSource": { "allowedIpCidrRanges": ["192.0.2.0/24"] } } }
次の構成例では、
2001:db8::/32
パブリック IPv6 アドレス範囲へのアクセスを許可しますが、任意の VPC からのトラフィックをブロックします。{ "ipFilterConfig": { "mode": "Enabled" "publicNetworkSource": { "allowedIpCidrRanges": ["2001:db8::/32"] } } }
VPC ネットワーク: 次の構成を使用して、VPC ネットワーク内のリソースへのアクセス権を付与できます。VPC 内のすべての IP アドレスまたは VPC 内の特定の IP 範囲へのアクセスを許可できます。これらの例では、
PROJECT_ID
は VPC ネットワークが存在するプロジェクト ID で、NETWORK_NAME
はバケットへのアクセスが許可されている VPC ネットワークの名前です。次の構成例では、特定の VPC から送信される任意の IPv4 または IPv6 アドレスからのリクエストへのアクセスを許可し、パブリック IP アドレスから送信されるトラフィックをブロックします。
{ "ipFilterConfig": { "mode": "Enabled" "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ] } }
次の構成例では、外部 IPv4 アドレスが
192.0.2.0/24
の VM に関連付けられている VPC からのリクエストへのアクセスのみを許可し、パブリック IP アドレスからのトラフィックをブロックします。{ "ipFilterConfig": { "mode": "Enabled" "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["192.0.2.0/24"] }, ] } }
次の構成例では、外部 IP アドレスのない VM に関連付けられた内部 IPv4 サブネット範囲を持つ VPC からのリクエストへのアクセスのみが許可され、パブリック IP アドレスからのトラフィックがブロックされます。
{ "ipFilterConfig": { "mode": "Enabled" "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ] } }
ここで、
IP_ADDRESS
は内部 IPv4 サブネット範囲です。次の構成例では、外部 IPv6 アドレス範囲が
2001:db8::/32
の VM に関連付けられたデュアルスタック IPv4 と IPv6 のサブネット範囲を持つ VPC からのリクエストへのアクセスのみが許可され、パブリック IP アドレスからのトラフィックがブロックされます。{ "ipFilterConfig": { "mode": "Enabled" "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["2001:db8::/32"] }, ] } }
次のステップ
- バケットの IP フィルタリング ルールを更新する。
- バケットの IP フィルタリング ルールを取得する。
- バケットの IP フィルタリング ルールを一覧表示する。
- バケットの IP フィルタリングを無効にする。
使ってみる
Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Cloud Storage のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
Cloud Storage を無料で試す