이 페이지에서는 IP 필터링 규칙을 사용해서 버킷을 만드는 방법을 설명합니다. IP 필터링을 사용해서 버킷을 만들면 버킷 IP 필터링 규칙에 지정된 IP 주소를 기준으로 수신되는 요청을 검사하여 버킷에 대한 액세스를 제어할 수 있습니다. 자세한 내용은 버킷 IP 필터링을 참조하세요.
기존 버킷에서 IP 필터링 규칙을 만들거나 업데이트하는 방법은 버킷 IP 필터링 규칙 업데이트를 참조하세요.
필요한 역할
IP 필터링 규칙을 사용하여 버킷을 만드는 데 필요한 권한을 얻으려면 관리자에게 버킷에 대한 스토리지 관리자(roles/storage.admin
) 역할을 부여해 달라고 요청하세요. 이 역할에는 IP 필터링 규칙을 버킷을 만드는 데 필요한 권한이 포함되어 있습니다.
필요한 정확한 권한을 보려면 필요한 권한 섹션을 확장하세요.
필수 권한
storage.buckets.create
storage.buckets.setIpFilter
커스텀 역할로도 이러한 권한을 얻을 수 있습니다. 다른 사전 정의된 역할을 사용해서도 이러한 권한을 얻을 수 있습니다. 어떤 역할이 어떤 권한과 연결되어 있는지 확인하려면 Cloud Storage에 대한 IAM 역할을 참조하세요.
버킷에 대한 역할 부여는 버킷에 IAM 사용을 참조하세요.
IP 필터링 규칙을 사용하여 버킷 만들기
gcloud
Google Cloud CLI 버전 526.0.0 이상이 설치되었는지 확인합니다.
gcloud version | head -n1
이전 gcloud CLI 버전이 설치되어 있는 경우 버전을 업데이트합니다.
gcloud components update --version=526.0.0
들어오는 요청에 대해 규칙을 정의하는 JSON 파일을 만듭니다. 버킷 IP 필터링 규칙을 만드는 방법과 예시는 버킷 IP 필터링 구성을 참조하세요.
{ "mode":"MODE", "publicNetworkSource":{ "allowedIpCidrRanges":[ "RANGE_CIDR", "..." ] }, "vpcNetworkSources":[ { "network":"projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges":[ "RANGE_CIDR", "..." ] }, "..." ], "allowCrossOrgVpcs":ALLOW_CROSS_ORG_VPCS, "allowAllServiceAgentAccess": ALLOW_ALL_SERVICE_AGENT_ACCESS }
각 항목의 의미는 다음과 같습니다.
MODE
는 버킷 IP 필터링 구성의 모드입니다. 유효한 값은Enabled
및Disabled
입니다.Enabled
로 설정하면 IP 필터링 규칙이 버킷에 적용됩니다. 버킷에 들어오는 모든 요청은 이러한 규칙에 따라 평가됩니다.Disabled
로 설정되었으면 들어오는 모든 요청이 버킷에 액세스하도록 허용됩니다.RANGE_CIDR
은 버킷 액세스가 허용된 공용 네트워크 IPv4 또는 IPv6 주소 범위입니다. 주소 범위를 하나만 입력하거나 여러 개를 목록으로 입력할 수 있습니다.PROJECT_ID
는 가상 프라이빗 클라우드(VPC) 네트워크가 속한 프로젝트 ID입니다. 여러 VPC 네트워크를 구성하려면 각 네트워크가 속한 프로젝트를 지정해야 합니다.NETWORK_NAME
은 버킷 액세스가 허용된 VPC 네트워크의 이름입니다. 여러 VPC 네트워크를 구성하려면 각 네트워크의 이름을 지정해야 합니다.ALLOW_CROSS_ORG_VPCS
는vpcNetworkSources
에 정의된 VPC 네트워크가 다른 조직에서 시작되도록 허용할지 여부를 나타내는 불리언 값입니다. 이 필드는 선택사항입니다.true
로 설정하면 요청이 조직 간 VPC 네트워크를 허용합니다.false
로 설정하면 요청이 VPC 네트워크를 버킷과 동일한 조직으로 제한합니다. 지정되지 않은 경우 기본값은false
입니다. 이 필드는vpcNetworkSources
가 비어 있지 않은 경우에만 적용됩니다.ALLOW_ALL_SERVICE_AGENT_ACCESS
는 IP 필터 구성과 관계없이 서비스 에이전트가 버킷에 액세스하도록 허용할지 여부를 나타내는 불리언 값입니다. 값이true
인 경우 다른 Google Cloud 서비스는 서비스 에이전트를 사용하여 IP 기반 검증 없이 버킷에 액세스할 수 있습니다.
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": "MODE", "publicNetworkSource": { "allowedIpCidrRanges": [RANGE_CIDR, ... ] }, "vpcNetworkSources": [ {"network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": [RANGE_CIDR, ... ] }, ... ], "allowCrossOrgVpcs": ALLOW_CROSS_ORG_VPCS, "allowAllServiceAgentAccess": ALLOW_ALL_SERVICE_AGENT_ACCESS }, }
각 항목의 의미는 다음과 같습니다.
MODE
는 IP 필터 구성의 상태입니다. 유효한 값은Enabled
,Disabled
입니다.Enabled
로 설정하면 IP 필터링 규칙이 버킷에 적용되고 버킷에 대해 들어오는 모든 요청이 이러한 규칙에 따라 평가됩니다.Disabled
로 설정하면 들어오는 모든 요청이 버킷 및 해당 데이터에 액세스할 수 있으며, 사용자에게 필요한 IAM 권한이 있는지 평가하지 않습니다.RANGE_CIDR
은 버킷 액세스가 허용된 공용 네트워크 IPv4 또는 IPv6 주소 범위입니다. 주소 범위를 하나만 입력하거나 여러 개를 목록으로 입력할 수 있습니다.PROJECT_ID
는 VPC 네트워크가 속한 프로젝트 ID입니다. 여러 VPC 네트워크를 구성하려면 각 네트워크가 속한 프로젝트를 지정해야 합니다.NETWORK_NAME
은 버킷 액세스가 허용된 VPC 네트워크의 이름입니다. 여러 VPC 네트워크를 구성하려면 각 네트워크의 이름을 지정해야 합니다.ALLOW_ALL_SERVICE_AGENT_ACCESS
는 IP 필터 구성과 관계없이 서비스 에이전트가 버킷에 액세스하도록 허용할지 여부를 나타내는 불리언 값입니다. 값이true
인 경우 다른 Google Cloud 서비스는 서비스 에이전트를 사용하여 IP 기반 검증 없이 버킷에 액세스할 수 있습니다.ALLOW_CROSS_ORG_VPCS
는vpcNetworkSources
에 정의된 VPC 네트워크가 다른 조직에서 시작되도록 허용할지 여부를 나타내는 불리언 값입니다. 이 필드는 선택사항입니다.true
로 설정하면 요청이 조직 간 VPC 네트워크를 허용합니다.false
로 설정하면 요청이 VPC 네트워크를 버킷과 동일한 조직으로 제한합니다. 지정되지 않은 경우 기본값은false
입니다. 이 필드는vpcNetworkSources
가 비어 있지 않은 경우에만 적용됩니다.
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"
각 항목의 의미는 다음과 같습니다.
JSON_FILE_NAME
은 버킷에 대한 설정이 포함된 JSON 파일의 이름입니다.PROJECT_IDENTIFIER
는 버킷이 연결된 프로젝트의 ID 또는 번호입니다. 예를 들면my-project
입니다.
버킷 IP 필터링 구성
이 섹션에서는 Cloud Storage 버킷에 대해 액세스를 제어하는 버킷 IP 필터링 JSON 파일 구성의 예시입니다. 다음 예시 중 아무 것이라도 사용해서 들어오는 요청에 대해 액세스를 부여할 수 있습니다.
모든 공개 IP 주소(IPv4 또는 IPv6):
다음 구성은 모든 공개 IPv4 또는 IPv6 주소에 대해 액세스 권한을 부여하지만 모든 VPC에서 발생하는 트래픽을 차단합니다.
gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, "allowAllServiceAgentAccess": false }
REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, "allowAllServiceAgentAccess": false } }
특정 공개 IP 범위:
다음 구성 예시는
192.0.2.0/24
공개 IPv4 주소 범위에 대해 액세스 권한을 부여하지만 모든 VPC에서 발생하는 트래픽을 차단합니다.gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["192.0.2.0/24"] }, "allowAllServiceAgentAccess": false }
REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["192.0.2.0/24"] }, "allowAllServiceAgentAccess": false } }
다음 구성 예시는
2001:db8::/32
공개 IPv6 주소 범위에 대해 액세스 권한을 부여하지만 모든 VPC에서 발생하는 트래픽을 차단합니다.gcloud
{ "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["2001:db8::/32"] }, "allowAllServiceAgentAccess": false }
REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "publicNetworkSource": { "allowedIpCidrRanges": ["2001:db8::/32"] }, "allowAllServiceAgentAccess": false } }
VPC 네트워크: 다음 구성을 사용해서 VPC 네트워크 내부의 리소스에 대해 액세스 권한을 부여할 수 있습니다. VPC 내의 모든 IP 주소 또는 VPC 내의 특정 IP 범위에 대해 액세스 권한을 부여할 수 있습니다. 이러한 각 예시에서
PROJECT_ID
는 VPC 네트워크가 속한 프로젝트 ID이고NETWORK_NAME
은 버킷에 액세스하도록 허용된 VPC 네트워크의 이름입니다.다음 구성 예시는 특정 VPC에서 들어오는 모든 IPv4 또는 IPv6 주소의 요청에 대해 액세스 권한을 부여하지만 공개 IP 주소에서 발생하는 트래픽을 차단합니다.
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ], "allowAllServiceAgentAccess": false }
REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["0.0.0.0/0", "::/0"] }, ], "allowAllServiceAgentAccess": false } }
다음 구성 예시는 외부 IPv4 주소로
192.0.2.0/24
를 사용하는 VM과 연관된 VPC에서 발생하는 요청에만 액세스 권한을 부여하고 공개 IP 주소에서 발생하는 트래픽을 차단합니다.gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["192.0.2.0/24"] }, ], "allowAllServiceAgentAccess": false }
REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["192.0.2.0/24"] }, ], "allowAllServiceAgentAccess": false } }
다음 구성 예시는 외부 IP 주소가 없는 VM과 연결되어 있고, 내부 IPv4 서브넷 범위를 갖는 VPC에서 발생하는 요청에만 액세스를 허용하며, 공개 IP 주소에서 발생하는 트래픽을 차단합니다.
gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false }
각 항목의 의미는 다음과 같습니다.
여기서
IP_ADDRESS
는 내부 IPv4 서브넷 범위입니다.REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["IP_ADDRESS"] }, ], "allowAllServiceAgentAccess": false } }
각 항목의 의미는 다음과 같습니다.
여기서
IP_ADDRESS
는 내부 IPv4 서브넷 범위입니다.다음 구성 예시는 외부 IPv6 주소 범위로
2001:db8::/32
를 사용하는 VM에 연결되어 있고, 이중 스택 IPv4 및 IPv6 서브넷 범위를 갖는 VPC에서 발생하는 요청에만 액세스를 허용하며, 공개 IP 주소에서 발생하는 트래픽을 차단합니다.gcloud
{ "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["2001:db8::/32"] }, ], "allowAllServiceAgentAccess": false }
REST API
JSON API
{ "ipFilter": { "mode": "Enabled", "vpcNetworkSources": [ { "network": "projects/PROJECT_ID/global/networks/NETWORK_NAME", "allowedIpCidrRanges": ["2001:db8::/32"] }, ], "allowAllServiceAgentAccess": false } }
다음 단계
직접 사용해 보기
Google Cloud를 처음 사용하는 경우 계정을 만들어 실제 시나리오에서 Cloud Storage의 성능을 평가할 수 있습니다. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
Cloud Storage 무료로 사용해 보기