이 페이지에서는 리소스 계층 구조에서 프로젝트를 그룹화하고 구성하기 위해 Google Cloud 폴더를 만드는 방법을 설명합니다. 폴더를 사용하여 관리 업무를 위임하고, 환경별 조직 정책을 적용하고, 부서 전반에서 비용 관리를 간소화할 수 있습니다.
폴더는 Cloud Platform 리소스 계층 구조의 노드입니다. 폴더에는 프로젝트, 다른 폴더 또는 이 두 가지의 조합이 포함될 수 있습니다. 조직 리소스는 폴더를 사용하여 계층 구조의 조직 리소스 노드 아래 프로젝트를 그룹화할 수 있습니다. 예를 들어 조직 리소스에는 여러 부서가 있을 수 있고 부서마다 자체 Google Cloud 리소스가 있을 수 있습니다. 폴더를 사용하면 부서별로 이러한 리소스를 그룹화할 수 있습니다. 폴더는 공통 허용 또는 거부 정책을 공유하는 리소스를 그룹화하는 데 사용됩니다. 한 폴더는 폴더 또는 리소스를 여러 개 포함할 수 있지만 지정된 폴더 또는 리소스는 단 하나의 상위 항목만 가질 수 있습니다.
다음 다이어그램에서 'Company' 조직 리소스에는 두 개의 부서를 나타내는 폴더 'Dept X' 및 'Dept Y'와 두 부서에 공통되는 항목을 나타내는 폴더 'Shared Infrastructure'가 있습니다. 'Dept Y'는 두 팀으로 구성되어 있고, 팀 폴더는 다시 제품으로 구성됩니다. 'Product 1' 폴더에는 세 개의 프로젝트가 있는데, 각 프로젝트는 프로젝트에 필요한 리소스로 구성됩니다. 이를 통해 적합한 수준으로 허용, 거부 또는 조직 정책을 할당할 때 유연성을 높일 수 있습니다.
폴더 수준 허용 및 거부 정책으로 폴더 내 리소스에 대한 액세스를 제어할 수 있습니다. 예를 들어 사용자에게 폴더에 대한 Compute 인스턴스 관리자 역할이 부여되는 경우 사용자는 폴더의 모든 프로젝트에 대한 Compute 인스턴스 관리자 역할을 갖게 됩니다.
시작하기 전에
폴더 기능은 조직 리소스가 있는 Google Workspace 및 Cloud ID 고객만 사용할 수 있습니다. 조직 리소스를 가져오는 방법에 대한 자세한 내용은 조직 리소스 가져오기를 참조하세요.
폴더를 가장 잘 사용하는 방법을 모색하고 있다면 다음을 수행하는 것이 좋습니다.
- IAM을 사용하여 폴더에 대한 액세스 제어를 검토합니다. 이 항목에서는 폴더와 폴더에 있는 리소스에 대해 누가 어떤 액세스 권한을 갖는지를 제어하는 방법에 대해 설명합니다. 이 항목에서는 폴더와 폴더에 있는 리소스에 대해 누가 어떤 액세스 권한을 갖는지를 제어하는 방법에 대해 설명합니다.
- 폴더 권한을 설정하는 방법을 파악합니다. 폴더는 다양한 Identity and Access Management (IAM) 역할을 지원합니다. 사용자가 프로젝트 구조를 볼 수 있도록 권한을 광범위하게 설정하려면 조직 리소스 수준에서 전체 도메인에 조직 뷰어 및 폴더 뷰어 역할을 부여합니다. 폴더 계층 구조의 분기에 대한 가시성을 제한하려면 사용자에게 표시할 폴더에 대해서만 폴더 뷰어 역할을 부여합니다.
- 폴더를 만듭니다. 클라우드 리소스를 구성하는 방법을 계획할 때 조직 리소스에 가장 적합한 계층 구조를 실험할 수 있는 샌드박스로 단일 폴더를 시작하는 것이 좋습니다. 폴더는 액세스 및 구성 정책에 대한 리소스와 연결 지점 간의 격리 경계라는 관점으로 보면 됩니다. 다른 부서에 속하는 리소스를 포함하는 폴더를 만들고 폴더에 대한 관리자 역할을 할당하여 관리자 권한을 위임할 수 있습니다. 또한 폴더를 사용하여 애플리케이션 또는 개발, 프로덕션, 테스트와 같이 다른 환경에 속하는 리소스를 그룹화할 수 있습니다. 중첩된 폴더를 사용하여 이러한 여러 시나리오를 모델링하세요.
일반적인 상황은 앞서 리소스 계층 구조에 표시된 대로 추가 폴더 또는 프로젝트를 포함하는 폴더를 만드는 것입니다. 이 구조를 폴더 계층 구조 라고 합니다. 폴더 계층 구조를 만들 때 다음 요소를 고려하세요.
- 폴더는 최대 10수준까지 중첩할 수 있습니다.
- 상위 폴더는 300개를 초과하는 폴더를 포함할 수 없습니다. 이는 직접 하위 폴더만 의미합니다. 이러한 하위 폴더는 추가 폴더 또는 프로젝트를 포함할 수 있습니다.
- 폴더 표시 이름은 계층 구조의 동일한 수준 내에서 고유해야 합니다.
폴더 관리 권한 설정
폴더에 액세스하고 관리하려면 특정 사용자 그룹에 폴더별 IAM 역할을 할당합니다. 이러한 역할에 대한 자세한 내용은 IAM을 사용하여 폴더에 대한 액세스 제어를 참조하세요. 또한 권장사항을 검토하는 것도 폴더 권한에 대한 최적의 구성을 파악하는 데 도움이 됩니다.
전체 조직 리소스의 폴더를 관리하려면 폴더 관리자 역할이 필요합니다. 이 역할은 사용자에게 폴더에 대한 IAM 권한을 생성, 수정, 삭제, 이동, 변경할 수 있는 권한과 폴더 간에 프로젝트를 이동할 수 있는 권한을 부여합니다.
처음에는 조직 관리자가 조직 리소스에 대한 폴더 관리자 역할을 할당할 수 있습니다. 이후 이 역할에 할당되는 계정은 이 역할을 다른 계정에 부여할 수 있습니다.
폴더 권한을 설정하려면 다음 단계를 따르세요.
콘솔
- 콘솔에서 리소스 관리 페이지를 엽니다. Google Cloud
- 정보 패널이 열려 있지 않으면 정보 패널 표시를 클릭합니다.
- 리소스 테이블에서 폴더가 포함된 조직을 펼칩니다.
- 조직 아래의 리소스 목록에서 관리하려는 폴더를 선택합니다.
- 정보 패널에서 주 구성원 추가를 클릭합니다.
- 주 구성원 추가 필드에 권한을 부여할 이메일 주소를 입력합니다.
- 역할 선택 메뉴에서 Resource Manager 카테고리를 선택한 후 부여할 역할(예: 폴더 관리자)을 선택합니다.
- 저장을 클릭하여 새 역할을 부여합니다.
gcloud
Google Cloud CLI를 사용해서 주 구성원에 폴더 관리자 역할을 부여하려면 다음 명령어를 실행합니다.
gcloud organizations add-iam-policy-binding ORGANIZATION_ID \
--member=user:USER_ID \
--role=roles/resourcemanager.folderAdmin
REST
요청 JSON:
request_json= '{ policy: { version: "1", bindings: [ { role: "roles/folderAdmin",
members: [ "user:admin@myorganization.com", ] }, { role: "roles/folderCreator",
members: [ "user:admin@myorganization.com", ] } , { role: "roles/folderMover",
members: [ "user:admin@myorganization.com", ] } , ] } }'
curl 요청:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/ORGANIZATION_NAME:setIamPolicy
ORGANIZATION_NAME을 허용 정책을 설정하는 조직의 이름으로 바꿉니다(예: organizations/123).
폴더를 만듭니다.
폴더를 만들려면 상위 수준의 폴더 관리자 또는 폴더 생성자 역할이 있어야 합니다. 예를 들어 조직 수준에서 폴더를 만들려면 조직 수준에 이러한 역할 중 하나가 있어야 합니다.
폴더를 만드는 과정에서 폴더에 이름을 지정해야 합니다. 폴더 이름은 다음 요구 사항을 충족해야 합니다.
- 이름은 문자, 숫자, 공백, 하이픈, 밑줄을 포함할 수 있습니다.
- 폴더의 표시 이름은 문자 또는 숫자로 시작하고 끝나야 합니다.
- 이름은 3~30자(영문 기준) 사이여야 합니다.
- 이름은 상위 항목을 공유하는 다른 모든 폴더와 구분되어야 합니다.
폴더를 만들려면 다음 단계를 따르세요.
콘솔
'프로젝트 및 폴더 관리' 섹션을 사용하여 UI에서 폴더를 만들 수 있습니다.
콘솔에서 리소스 관리 페이지로 이동합니다. Google Cloud
페이지 상단의 조직 드롭다운 목록에서 조직 리소스 이름이 선택되어 있는지 확인합니다.
폴더 만들기를 클릭하고 다음 옵션 중 하나를 선택합니다.
- 표준 폴더: 표준 폴더 리소스입니다.
- 규정 준수 폴더: 리소스에 대해 추가적인 규제, 리전 또는 주권 제어를 제공하는 Assured Workloads 폴더입니다. Google Cloud 이 옵션을 선택하면 Assured Workloads로 이동하여 폴더를 만듭니다.
폴더 이름 상자에 새 폴더의 이름을 입력합니다.
대상 아래에서 찾아보기를 클릭한 다음 새 폴더를 만들 조직 리소스 또는 폴더를 선택합니다.
- 만들기를 클릭합니다.
gcloud
Google Cloud CLI를 사용하여 프로그래매틱 방식으로 폴더를 만들 수 있습니다.
gcloud 명령줄 도구를 사용하여 조직 리소스 아래에 폴더를 만들려면 다음 명령어를 실행합니다.
gcloud resource-manager folders create \
--display-name=DISPLAY_NAME \
--organization=ORGANIZATION_ID
상위 항목이 다른 폴더인 폴더를 만들려면 다음 명령어를 실행합니다
gcloud resource-manager folders create \
--display-name=DISPLAY_NAME \
--folder=FOLDER_ID
다음을 바꿉니다.
- DISPLAY_NAME: 폴더의 표시 이름입니다. 상위 요소가 동일한 두 개의 폴더는 표시 이름을 공유할 수 없습니다. 표시 이름은 문자 또는 숫자로 시작하고 끝나야 하며 문자, 숫자, 공백, 하이픈, 밑줄을 포함할 수 있고 30자를 초과할 수 없습니다.
- ORGANIZATION_ID: 상위 요소가 조직 리소스인 경우 상위 조직 리소스의 ID입니다.
- FOLDER_ID: 상위 요소가 폴더인 경우 상위 폴더의 ID입니다.
API
폴더는 API 요청으로 만들 수 있습니다.
요청 JSON:
request_json= '{
display_name: DISPLAY_NAME,
parent: ORGANIZATION_NAME
}'
폴더 생성 curl 요청:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/folders
각 항목의 의미는 다음과 같습니다.
- DISPLAY_NAME: 새 폴더의 표시 이름입니다(예: 'My Awesome Folder').
- ORGANIZATION_NAME: 폴더를 만드는 조직 리소스의 이름입니다(예:
organizations/123).
폴더 생성 응답:
{
"name": "operations/fc.123456789",
"metadata": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
"displayName": "DISPLAY_NAME",
"operationType": "CREATE"
}
}
작업 가져오기 curl 요청:
curl -H "Authorization: Bearer ${bearer_token}" \
https://cloudresourcemanager.googleapis.com/v3/operations/fc.123456789
작업 가져오기 응답:
{
"name": "operations/fc.123456789",
"metadata": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.FolderOperation",
"displayName": "DISPLAY_NAME",
"operationType": "CREATE"
},
"done": true,
"response": {
"@type": "type.googleapis.com/google.cloud.resourcemanager.v3.Folder",
"name": "folders/12345",
"parent": "organizations/123",
"displayName": "DISPLAY_NAME",
"lifecycleState": "ACTIVE",
"createTime": "2017-07-19T23:29:26.018Z",
"updateTime": "2017-07-19T23:29:26.046Z"
}
}
폴더 생성 중에 태그 추가
태그를 사용하면 리소스 주석을 만들 수 있습니다. 폴더를 만들 때 태그를 추가할 수 있습니다. 이렇게 하려면 태그 사용자 역할을 부여해야 합니다. 이 역할에 포함된 권한에 대한 자세한 내용은 태그 만들기 및 관리를 참조하세요. 다음 방법 중 하나를 통해서만 태그 키-값 쌍의 네임스페이스를 추가할 수 있습니다.
gcloud
폴더를 만드는 동안 태그를 추가하려면 다음 명령어를 실행합니다.
gcloud resource-manager folders create \
--display-name=DISPLAY_NAME \
--organization=ORGANIZATION_ID\
--tags=KEY_VALUE_PAIRS
다음을 바꿉니다.
DISPLAY_NAME: 폴더의 표시 이름입니다.ORGANIZATION_ID: 상위 조직 리소스의 고유 식별자입니다.KEY_VALUE_PAIRS: 리소스에 할당할 수 있는 쉼표로 구분된 키-값 쌍 목록입니다. 쉼표로 구분된 키-값 쌍의 예시는123/environment=production, 456/create=testresource입니다.
REST
다음 스니펫은 폴더를 만들고 여기에 태그를 추가하는 JSON 요청입니다.
POST https://cloudresourcemanager.googleapis.com/v3/projects/
Authorization: *************
Content-Type: application/json
{
"display_name": "our-folder-456",
"parent": "organizations/123",
"tags": {
"key": "123/environment"
"value": "production"
},
"tags": {
"key": "123/costCenter"
"value": "marketing"
}
}
폴더에 대한 액세스 구성
폴더에 대한 액세스를 구성하려면 상위 수준에 폴더 IAM 관리자 또는 폴더 관리자 역할이 있어야 합니다.
콘솔
콘솔에서 리소스 관리 페이지를 엽니다. Google Cloud
왼쪽 상단의 조직 드롭다운 목록을 클릭한 다음 조직 리소스를 선택합니다.
권한을 변경할 프로젝트 옆에 있는 체크박스를 선택합니다.
오른쪽 정보 패널의 권한 아래에 추가할 구성원의 이메일 주소를 입력합니다.
역할 선택 드롭다운 목록에서 해당 구성원에게 부여할 역할을 선택합니다.
추가를 클릭합니다. 구성원의 새로운 역할 추가 또는 업데이트를 확인하는 알림이 나타납니다.
gcloud
Google Cloud CLI 또는 REST API를 사용하여 프로그래매틱 방식으로 폴더에 대한 액세스를 구성할 수 있습니다.
gcloud resource-manager folders \
add-iam-policy-binding FOLDER_ID \
--member=user:email1@example.com \
--role=roles/resourcemanager.folderEditor
gcloud resource-manager folders \
add-iam-policy-binding FOLDER_ID \
--member=user:email1@example.com \
--role=roles/resourcemanager.folderViewer
다른 방법은 다음과 같습니다.
gcloud resource-manager folders \
set-iam-policy FOLDER_ID POLICY_FILE
다음을 바꿉니다.
- FOLDER_ID: 새 폴더의 ID
- POLICY_FILE: 폴더의 정책 파일 경로
API
setIamPolicy 메서드는 폴더에 대한 액세스 제어 정책을 설정하여 모든 기존 정책을 대체합니다. resource 필드는 폴더의 리소스 이름이어야 합니다(예: folders/1234).
request_json= '{
policy: {
version: "1",
bindings: [
{
role: "roles/resourcemanager.folderEditor",
members: [
"user:email1@example.com",
"user:email2@example.com",
]
}
]
}
}'
curl 요청:
curl -X POST -H "Content-Type: application/json" \
-H "Authorization: Bearer ${bearer_token}" \
-d "$request_json" \
https://cloudresourcemanager.googleapis.com/v3/FOLDER_ID:setIamPolicy
FOLDER_ID를 IAM 정책을 설정하는 폴더의 이름으로 바꿉니다. 예: folders/123.
장기 실행 작업 처리
생성 또는 마이그레이션과 같은 특정 폴더 작업은 전역 전파가 필요하므로
비동기식으로 처리됩니다. Google Cloud 터미널 또는 자동화 스크립트가 차단되지 않도록 하려면 --async 플래그를 사용하면 됩니다.
이 플래그를 사용하면 명령어는 장기 실행 작업 (LRO) 객체를 즉시 반환합니다. 그런 다음 operation_id를 사용하여 편한 시간에 완료 여부를 폴링할 수 있습니다. --async 플래그는 folders create 및 folders move 명령어에서만 지원됩니다.
플래그를 사용하려면 다음 단계를 따르세요.
비동기 작업을 시작합니다. 다음 샘플 명령어를 참조하세요.
gcloud resource-manager folders create \ --display-name="Test Async Folder" \ --organization=2518 \ --async출력은 작업 이름 (예: fc.8572)을 제공하고
done: false를 표시합니다.샘플 응답:
name: operations/fc.8572 metadata: operation_type: CREATE display_name: Awe-Inspiring Async Folder destination_parent: organizations/2518 done: false작업 상태를 확인합니다. 작업이 완료되었는지 확인하려면 이전 단계에서 제공된 ID로
operations describe명령어를 사용합니다.gcloud beta resource-manager operations describe fc.8572done이 true이면 응답 블록에 새로 만든 리소스의 전체 세부정보가 포함됩니다.name: operations/fc.8572 done: true response: name: folders/6428 display_name: Awe-Inspiring Async Folder lifecycle_state: ACTIVE create_time: '2024-03-20T10:00:00Z'
다음 단계
- 폴더 보기 및 업데이트에 대해 알아봅니다.
- 폴더 내에서 프로젝트 관리에 대해 알아봅니다.
- 폴더의 역할 및 권한에 대해 알아봅니다.
- 리소스 계층 구조의 모든 폴더 및 프로젝트 나열에 대해 알아봅니다.