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

このページでは、IP フィルタリング ルールを使用してバケットを作成する方法について説明します。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":"MODE",
      "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": "MODE",
        "publicNetworkSource":
          {
            "allowedIpCidrRanges":
              [RANGE_CIDR,
                ...
              ]
          },
        "vpcNetworkSources":
          [
            {"network": "projects/PROJECT_ID/global/networks/NETWORK_NAME",
            "allowedIpCidrRanges":
              [RANGE_CIDR,
              ...
              ]
            },
          ...
          ]
        }
    }

    ここで

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

    • 次の構成例では、任意の IPv4 または IPv6 アドレスから特定の VPC 経由で送信されるリクエストへのアクセスは許可されますが、パブリック 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 を無料で試す