バケットの IP フィルタリング ルールを作成する

このページでは、バケット IP フィルタリング ルールを作成する方法について説明します。バケット IP フィルタリングを有効にすると、バケット IP フィルタリング ルールで指定された IP アドレスと照らし合わせて受信リクエストを調べ、バケットへのアクセスを制御できます。詳細については、バケット IP フィルタリングをご覧ください。

必要なロール

バケット IP フィルタリング ルールの作成に必要な権限を取得するには、バケットに対するストレージ管理者(roles/storage.admin)ロールを付与するよう管理者に依頼してください。このロールには、バケット IP フィルタリング ルールの作成に必要な権限が含まれています。

必要な権限を正確に確認するには、[必要な権限] セクションを開きます。

必要な権限

  • storage.buckets.create
  • storage.buckets.setIpFilter

カスタムロールを使用して、これらの権限を取得することもできます。他の事前定義ロールでこれらの権限を取得することもできます。どのロールがどの権限に関連付けられているかを確認するには、Cloud Storage に適用される IAM のロールをご覧ください。

バケットに対してロールを付与する手順については、バケットで IAM を使用するをご覧ください。

バケットの IP フィルタリング ルールを作成する

コマンドライン

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 受信リクエストのルールを定義する JSON ファイルを作成します。バケット IP フィルタリング ルールの構造化方法の例については、バケット IP フィルタリング構成をご覧ください。

    {
      "mode": "Enabled",
      "publicNetworkSource":
        {
        "allowedIpCidrRanges":
          [RANGE_CIDR,
          ...
          ]
        },
      "vpcNetworkSources":
          [
           {"network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
            "allowedIpCidrRanges":
              [RANGE_CIDR,
              ...
              ]
           },
          ...
          ]
       }

    ここで

    • mode は、バケット IP フィルタリング構成のモードです。有効な値は EnabledDisabled です。Enabled に設定すると、IP フィルタリング ルールがバケットに適用されます。バケットへの受信リクエストは、これらのルールに対して評価されます。Disabled に設定すると、受信したすべてのリクエストがバケットにアクセスできます。

    • RANGE_CIDR は、バケットへのアクセスが許可されているパブリック ネットワークの IPv4 または IPv6 アドレス範囲です。1 つ以上のアドレス範囲をリストとして入力できます。

    • PROJECT_ID は、Virtual Private Cloud(VPC)ネットワークが存在するプロジェクト ID です。複数の VPC ネットワークを構成するには、各ネットワークが配置されているプロジェクトを指定する必要があります。

    • NETWORK_NAME は、バケットへのアクセスが許可されている VPC ネットワークの名前です。複数の VPC ネットワークを構成するには、各ネットワークの名前を指定する必要があります。

  3. 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

  1. gcloud CLI のインストールと初期化を行います。これにより、Authorization ヘッダーのアクセス トークンを生成できます。

  2. バケットの設定を含む 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 フィルタ構成の状態です。有効な値は EnabledDisabled です。Enabled に設定すると、IP フィルタリング ルールがバケットに適用され、バケットへのすべての受信リクエストがこれらのルールに対して評価されます。Disabled に設定すると、必要な IAM 権限がある場合、受信したすべてのリクエストが評価なしでバケットとそのデータにアクセスできます。バケット IP フィルタリング ルールを安全に有効にするには、まず modeDisabled に設定してルールを構成し、リクエストをすぐにブロックせずにルールを追加および調整できるようにします。ルールが正しく定義されていることを確認したら、modeEnabled に更新して、バケット IP フィルタリングを有効にします。

    • RANGE_CIDR は、バケットへのアクセスが許可されているパブリック ネットワークの IPv4 または IPv6 アドレス範囲です。1 つ以上のアドレス範囲をリストとして入力できます。

    • PROJECT_ID は、VPC ネットワークが存在するプロジェクト ID です。複数の VPC ネットワークを構成するには、各ネットワークが配置されているプロジェクトを指定する必要があります。

    • NETWORK_NAME は、バケットへのアクセスが許可されている VPC ネットワークの名前です。複数の VPC ネットワークを構成するには、各ネットワークの名前を指定する必要があります。

  3. 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"]
            },
        ]
      }
      }

次のステップ

使ってみる

Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Cloud Storage のパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。

Cloud Storage を無料で試す