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 주소 범위입니다. 주소 범위를 하나만 입력하거나 여러 개를 목록으로 입력할 수 있습니다.

    • PROJECT_ID는 가상 프라이빗 클라우드(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. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

  2. 버킷에 대한 설정이 포함된 JSON 파일을 만듭니다. 여기에는 버킷에 대한 nameipFilter 구성 필드가 포함되어야 합니다. 버킷 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 주소 범위입니다. 주소 범위를 하나만 입력하거나 여러 개를 목록으로 입력할 수 있습니다.

    • PROJECT_ID는 VPC 네트워크가 속한 프로젝트 ID입니다. 여러 VPC 네트워크를 구성하려면 각 네트워크가 속한 프로젝트를 지정해야 합니다.

    • NETWORK_NAME은 버킷 액세스가 허용된 VPC 네트워크의 이름입니다. 여러 VPC 네트워크를 구성하려면 각 네트워크의 이름을 지정해야 합니다.

  3. cURL을 사용하여 POST 버킷 요청으로 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 무료로 사용해 보기