버킷 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 필터링 구성의 모드입니다. 유효한 값은 Enabled, Disabled입니다. Enabled로 설정하면 IP 필터링 규칙이 버킷에 적용됩니다. 버킷에 들어오는 모든 요청은 이러한 규칙에 따라 평가됩니다. Disabled로 설정하면 모든 수신 요청이 버킷에 액세스할 수 있습니다.

    • RANGE_CIDR는 버킷에 액세스할 수 있는 공개 네트워크 IPv4 또는 IPv6 주소 범위입니다. 주소 범위를 하나 이상 목록으로 입력할 수 있습니다.

    • 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. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

  2. 버킷의 설정이 포함된 JSON 파일을 만듭니다. 여기에는 버킷의 nameipFilter 구성 필드가 포함되어야 합니다. 버킷 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 필터링 규칙을 안전하게 사용 설정하려면 먼저 modeDisabled로 설정하여 규칙을 구성합니다. 그러면 요청을 즉시 차단하지 않고 규칙을 추가하고 조정할 수 있습니다. 규칙이 올바르게 정의되었는지 확인한 후 modeEnabled로 업데이트하여 버킷 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 무료로 사용해 보기