이 페이지에서는 버킷 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 주소 범위입니다. 주소 범위를 하나 이상 목록으로 입력할 수 있습니다.
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
Authorization
헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.버킷의 설정이 포함된 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 주소 범위입니다. 주소 범위를 하나 이상 목록으로 입력할 수 있습니다.
PROJECT_ID
는 VPC 네트워크가 있는 프로젝트 ID입니다. 여러 VPC 네트워크를 구성하려면 각 네트워크가 있는 프로젝트를 지정해야 합니다.NETWORK_NAME
은 버킷에 액세스할 수 있는 VPC 네트워크의 이름입니다. 여러 VPC 네트워크를 구성하려면 각 네트워크의 이름을 지정해야 합니다.
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 무료로 사용해 보기