관리 폴더의 IAM 정책 설정 및 관리

이 페이지에서는 관리형 폴더에서 Identity and Access Management(IAM) 정책을 설정하는 방법을 설명하므로 버킷 내의 특정 객체 그룹에 대한 세부적인 액세스 제어를 얻을 수 있습니다.

다른 액세스 제어 방법을 찾고 있는 경우 다음 리소스를 참조하세요.

필요한 역할

관리 폴더에 대한 IAM 정책을 설정하고 관리하는 데 필요한 권한을 얻으려면 관리자에게 관리 폴더가 포함된 버킷의 스토리지 폴더 관리자(roles/storage.folderAdmin) IAM 역할을 부여해 달라고 요청하세요.

이 역할에는 관리 폴더의 IAM 정책을 설정하고 관리하는 데 필요한 다음 권한이 포함되어 있습니다.

  • storage.managedfolders.getIamPolicy

  • storage.managedfolders.setIamPolicy

커스텀 역할로도 이러한 권한을 얻을 수 있습니다.

버킷의 역할 부여에 대한 자세한 내용은 버킷에 대한 IAM 정책 설정 및 관리를 참조하세요.

관리 폴더에 IAM 정책 설정

Console

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 버킷 목록에서 IAM 정책을 설정하려는 관리 폴더가 포함된 버킷의 이름을 클릭합니다.

  3. 버킷 세부정보 페이지의 IAM 정책을 설정하려는 관리형 폴더 옆에 있는 폴더 브라우저 창에서 옵션 더보기 아이콘 을 클릭합니다.

    액세스를 제어하려는 폴더가 시뮬레이션된 폴더이면 먼저 관리형 폴더 만들기의 단계를 수행하여 시뮬레이션된 폴더를 관리형 폴더로 변환합니다.

  4. 액세스 수정을 클릭합니다.

  5. MANAGED_FOLDER_NAME 권한 창에서 주 구성원 추가 를 클릭합니다.

  6. 새 주 구성원 필드에 액세스 권한을 부여할 주 구성원을 입력합니다. 포함할 수 있는 주 구성원에 대한 자세한 내용은 주 구성원 식별자를 참조하세요.

  7. 역할 할당 섹션에서 역할 선택 드롭다운을 사용하여 주 구성원에게 부여할 액세스 권한 수준을 지정합니다.

  8. 저장을 클릭합니다.

명령줄

  1. 다음 정보를 포함하는 JSON 파일을 만듭니다.

    {
      "bindings":[
        {
          "role": "IAM_ROLE",
          "members":[
            "PRINCIPAL_IDENTIFIER"
          ]
        }
      ]
    }

    각 항목의 의미는 다음과 같습니다.

    • IAM_ROLE은 부여할 IAM 역할입니다. 예를 들면 roles/storage.objectViewer입니다.

    • PRINCIPAL_IDENTIFIER는 관리 폴더 액세스 권한을 부여할 사용자를 식별합니다. 예를 들면 user:jane@gmail.com입니다. 주 구성원 식별자 형식 목록은 주 구성원 식별자를 참조하세요.

  2. gcloud storage managed-folders set-iam-policy 명령어를 사용합니다.

    gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME POLICY_FILE

    각 항목의 의미는 다음과 같습니다.

    • BUCKET_NAME은 IAM 정책을 적용하려는 관리 폴더가 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

    • MANAGED_FOLDER_NAME은 IAM 정책을 적용하려는 관리 폴더의 이름입니다. 예를 들면 my-managed-folder/입니다.

    • POLICY_FILE은 1단계에서 만든 JSON 파일의 경로입니다.

REST API

JSON

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

    또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고 Authorization 헤더에 포함할 수 있습니다.

  2. 다음 정보를 포함하는 JSON 파일을 만듭니다.

    {
      "bindings":[
        {
          "role": "IAM_ROLE",
          "members":[
            "PRINCIPAL_IDENTIFIER"
          ]
        }
      ]
    }

    각 항목의 의미는 다음과 같습니다.

    • IAM_ROLE은 부여할 IAM 역할입니다. 예를 들면 roles/storage.objectViewer입니다.

    • PRINCIPAL_IDENTIFIER는 관리 폴더 액세스 권한을 부여할 사용자를 식별합니다. 예를 들면 user:jane@gmail.com입니다. 주 구성원 식별자 형식 목록은 주 구성원 식별자를 참조하세요.

  3. cURL을 사용하여 PUT setIamPolicy 요청으로 JSON API를 호출합니다.

    curl -X PUT --data-binary @POLICY_FILE \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    각 항목의 의미는 다음과 같습니다.

    • POLICY_FILE은 이전 단계에서 만든 JSON 정책 파일의 경로입니다.

    • BUCKET_NAME은 IAM 정책을 적용하려는 관리 폴더가 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

    • MANAGED_FOLDER_NAME은 주 구성원에게 액세스 권한을 부여할 관리 폴더의 이름입니다. 예를 들면 my-managed-folder/입니다.

관리 폴더의 IAM 정책 보기

Console

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 버킷 목록에서 IAM 정책을 보려는 관리형 폴더가 포함된 버킷의 이름을 클릭합니다.

  3. 버킷 세부정보 페이지의 IAM 정책을 보려는 관리형 폴더 옆에 있는 폴더 브라우저 창에서 옵션 더보기 아이콘 을 클릭합니다.

  4. 액세스 수정을 클릭합니다.

FOLDER_NAME 권한 창에는 주 구성원, 역할, 상속된 역할, IAM 조건을 포함하여 관리형 폴더에 대한 권한이 표시됩니다.

명령줄

gcloud storage managed-folder get-iam-policy 명령어를 사용합니다.

gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME

각 항목의 의미는 다음과 같습니다.

  • BUCKET_NAME은 IAM 정책을 보려는 관리 폴더가 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

  • MANAGED_FOLDER_NAME은 IAM 정책을 보려는 관리 폴더의 이름입니다. 예를 들면 my-managed-folder/입니다.

REST API

JSON

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

    또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고 Authorization 헤더에 포함할 수 있습니다.

  2. cURL을 사용하여 GET getIamPolicy 요청으로 JSON API를 호출합니다.

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    각 항목의 의미는 다음과 같습니다.

    • BUCKET_NAME은 IAM 정책을 보려는 관리 폴더가 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

    • MANAGED_FOLDER_NAME은 IAM 정책을 보려는 관리 폴더의 이름입니다. 예를 들면 my-managed-folder/입니다.

관리 폴더 정책에서 주 구성원 삭제

Console

  1. Google Cloud 콘솔에서 Cloud Storage 버킷 페이지로 이동합니다.

    버킷으로 이동

  2. 버킷 목록에서 IAM 정책을 보려는 관리형 폴더가 포함된 버킷의 이름을 클릭합니다.

  3. 버킷 세부정보 페이지의 주 구성원을 삭제하려는 관리형 폴더 옆에 있는 폴더 브라우저 창에서 옵션 더보기 아이콘 을 클릭합니다.

  4. 액세스 수정을 클릭합니다.

  5. FOLDER_NAME 권한 창의 필터 필드에 주 구성원 이름을 입력합니다.

  6. 삭제 아이콘 을 클릭하여 주 구성원을 삭제합니다.

Cloud Storage가 관리형 폴더에서 주 구성원을 삭제합니다.

명령줄

gcloud storage managed-folder remove-iam-policy-binding 명령어를 사용합니다.

gcloud storage managed-folders remove-iam-policy-binding  gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE

각 항목의 의미는 다음과 같습니다.

  • BUCKET_NAME은 액세스 권한을 취소하려는 관리 폴더가 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

  • MANAGED_FOLDER_NAME은 IAM 정책을 삭제하려는 관리 폴더의 이름입니다. 예를 들면 my-managed-folder/입니다.

  • PRINCIPAL_IDENTIFIER는 액세스 권한을 취소할 사용자를 식별합니다. 예를 들면 user:jane@gmail.com입니다. 주 구성원 식별자 형식 목록은 주 구성원 식별자를 참조하세요.

  • IAM_ROLE은 취소할 IAM 역할입니다. 예를 들면 roles/storage.objectViewer입니다.

REST API

JSON

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

    또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고 Authorization 헤더에 포함할 수 있습니다.

  2. 관리 폴더에 적용된 기존 정책을 가져옵니다. 이렇게 하려면 cURL을 사용하여 GET getIamPolicy 요청으로 JSON API를 호출합니다.

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    각 항목의 의미는 다음과 같습니다.

    • BUCKET_NAME은 액세스 권한을 취소하려는 관리 폴더가 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

    • MANAGED_FOLDER_NAME은 IAM 정책을 삭제하려는 관리 폴더의 이름입니다. 예를 들면 my-managed-folder/입니다.

  3. 이전 단계에서 검색한 정책을 포함하는 JSON 파일을 만듭니다.

  4. JSON 파일을 편집하여 정책에서 주 구성원을 삭제합니다.

  5. cURL을 사용하여 PUT setIamPolicy 요청으로 JSON API를 호출합니다.

    curl -X PUT --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/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAME/iam"

    각 항목의 의미는 다음과 같습니다.

    • JSON_FILE_NAME은 3단계에서 만든 파일의 경로입니다.

    • BUCKET_NAME은 액세스 권한을 취소하려는 관리 폴더가 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

    • MANAGED_FOLDER_NAME은 IAM 정책을 삭제하려는 관리 폴더의 이름입니다. 예를 들면 my-managed-folder/입니다.

관리 폴더에 IAM 조건 사용

다음 섹션에서는 관리 폴더에 IAM 조건을 추가하고 삭제하는 방법을 보여줍니다. 관리 폴더의 IAM 조건을 보려면 관리 폴더에 대한 IAM 정책 보기를 참조하세요. Cloud Storage에 IAM 조건 사용에 대한 자세한 내용은 조건을 참조하세요.

관리 폴더에 조건을 추가하기 전에 버킷에 균일한 버킷 수준 액세스를 사용 설정해야 합니다.

관리 폴더에 새 조건 설정

명령줄

  1. 조건 title, 조건에 대한 속성 기반 논리 expression 및 선택적으로 조건에 대한 description을 포함하여 조건을 정의하는 JSON 또는 YAML 파일을 생성합니다.

    Cloud Storage는 날짜/시간,리소스 유형expression리소스 이름 속성만을 지원합니다.

  2. --condition-from-file 플래그와 함께 gcloud storage managed-folders add-iam-policy-binding 명령어를 사용합니다.

gcloud storage managed-folders add-iam-policy-binding  gs://BUCKET_NAME/MANAGED_FOLDER_NAME --member=PRINCIPAL_IDENTIFIER --role=IAM_ROLE --condition-from-file=CONDITION_FILE

각 항목의 의미는 다음과 같습니다.

  • BUCKET_NAME은 주 구성원 액세스 권한을 부여할 관리 폴더가 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

  • MANAGED_FOLDER_NAME은 주 구성원에게 액세스 권한을 부여할 관리 폴더의 이름입니다. 예를 들면 my-managed-folder/입니다.

  • PRINCIPAL_IDENTIFIER는 조건이 적용되는 사용자를 식별합니다. 예를 들면 user:jane@gmail.com입니다. 주 구성원 식별자 형식 목록은 주 구성원 식별자를 참조하세요.

  • IAM_ROLE은 주 구성원에게 부여할 IAM 역할입니다. 예를 들면 roles/storage.objectViewer입니다.

  • CONDITION_FILE은 이전 단계에서 만든 파일입니다.

또는 --condition-from-file 플래그 대신 --condition 플래그를 사용하여 명령어에 조건을 직접 포함할 수 있습니다.

REST API

JSON

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

    또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고 Authorization 헤더에 포함할 수 있습니다.

  2. GET getIamPolicy 요청을 사용하여 관리 폴더의 IAM 정책을 임시 JSON 파일에 저장합니다.

    curl \
    'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \
    --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json

    각 항목의 의미는 다음과 같습니다.

    • BUCKET_NAME은 IAM 조건을 설정하려는 관리 폴더가 포함된 버킷의 이름입니다.

    • MANAGED_FOLDER_NAME은 IAM 조건을 설정할 관리 폴더의 이름입니다.

  3. 텍스트 편집기에서 tmp-policy.json 파일을 수정하여 IAM 정책의 바인딩에 새 조건을 추가합니다.

    {
        "version": VERSION,
        "bindings": [
          {
            "role": "IAM_ROLE",
            "members": [
              "PRINCIPAL_IDENTIFIER"
            ],
            "condition": {
              "title": "TITLE",
              "description": "DESCRIPTION",
              "expression": "EXPRESSION"
            }
          }
        ],
        "etag": "ETAG"
    }

    각 항목의 의미는 다음과 같습니다.

    • VERSIONIAM 정책 버전으로, IAM 조건이 있는 관리 폴더의 경우 3이어야 합니다.

    • IAM_ROLE은 조건이 적용되는 역할입니다. 예를 들면 roles/storage.objectViewer입니다.

    • PRINCIPAL_IDENTIFIER는 조건이 적용되는 사용자를 식별합니다. 예를 들면 user:jane@gmail.com입니다. 주 구성원 식별자 형식 목록은 주 구성원 식별자를 참조하세요.

    • TITLE은 조건의 제목입니다. 예를 들면 expires in 2019입니다.

    • DESCRIPTION은 선택사항으로, 조건의 설명입니다. 예를 들면 Permission revoked on New Year's입니다.

    • EXPRESSION속성 기반 논리 표현식입니다. 예를 들면 request.time < timestamp(\"2019-01-01T00:00:00Z\")입니다. 표현식의 더 많은 예시는 조건 속성 참조를 확인하세요. Cloud Storage는 날짜/시간, 리소스 유형리소스 이름 속성만 지원합니다.

    ETAG는 수정하면 안 됩니다.

  4. PUT setIamPolicy 요청을 사용하여 버킷에서 수정된 IAM 정책을 설정합니다.

    curl -X PUT --data-binary @tmp-policy.json \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFoldersMANAGED_FOLDER_NAME/iam"

    각 항목의 의미는 다음과 같습니다.

    • BUCKET_NAME은 IAM 조건을 설정하려는 관리 폴더가 포함된 버킷의 이름입니다.

    • MANAGED_FOLDER_NAME은 IAM 조건을 설정할 관리 폴더의 이름입니다.

관리 폴더에서 조건 삭제

명령줄

  1. gcloud storage managed-folders get-iam-policy 명령어를 사용하여 관리 폴더의 IAM 정책을 임시 JSON 파일에 저장합니다.

    gcloud storage managed-folders get-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME > tmp-policy.json
  2. 텍스트 편집기에서 tmp-policy.json 파일을 수정하여 IAM 정책에서 조건을 삭제합니다.

  3. gcloud storage managed-folders set-iam-policy 명령어를 사용하여 관리 폴더에서 수정된 IAM 정책을 설정합니다.

    gcloud storage managed-folders set-iam-policy gs://BUCKET_NAME/MANAGED_FOLDER_NAME tmp-policy.json

REST API

JSON

  1. Authorization 헤더에 대한 액세스 토큰을 생성하려면 gcloud CLI가 설치 및 초기화되어 있어야 합니다.

    또는 OAuth 2.0 Playground를 사용하여 액세스 토큰을 만들고 Authorization 헤더에 포함할 수 있습니다.

  2. GET getIamPolicy 요청을 사용하여 관리 폴더의 IAM 정책을 임시 JSON 파일에 저장합니다.

    curl \
    'https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam' \
    --header 'Authorization: Bearer $(gcloud auth print-access-token)' > tmp-policy.json

    각 항목의 의미는 다음과 같습니다.

    • BUCKET_NAME은 액세스를 변경할 관리 폴더가 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

    • MANAGED_FOLDER_NAME은 액세스를 변경할 관리 폴더의 이름입니다. 예를 들면 my-managed-folder/입니다.

  3. 텍스트 편집기에서 tmp-policy.json 파일을 수정하여 IAM 정책에서 조건을 삭제합니다.

  4. PUT setIamPolicy 요청을 사용하여 관리 폴더에서 수정된 IAM 정책을 설정합니다.

    curl -X PUT --data-binary @tmp-policy.json \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/managedFolders/MANAGED_FOLDER_NAMEiam"

    각 항목의 의미는 다음과 같습니다.

    • BUCKET_NAME은 액세스를 변경할 관리 폴더가 포함된 버킷의 이름입니다. 예를 들면 my-bucket입니다.

    • MANAGED_FOLDER_NAME은 액세스를 변경할 관리 폴더의 이름입니다. 예를 들면 my-managed-folder/입니다.

프로젝트에 IAM 사용

프로젝트 수준 이상에서 IAM 역할을 부여하고 취소하는 방법은 프로젝트, 관리 폴더, 조직에 대한 액세스 관리를 참조하세요.

권장사항

주 구성원에게 필요한 액세스 권한을 부여할 수 있는 최소한의 역할을 설정해야 합니다. 예를 들어 팀 구성원이 버킷의 관리 폴더를 보기만 하면 되는 경우 스토리지 폴더 관리자(roles/storage.folderAdmin) 역할 대신 스토리지 객체 관리자(roles/storage.objectAdmin) 역할을 부여합니다. 마찬가지로, 팀 구성원에게 버킷의 관리형 폴더를 관리할 수 있는 전체 권한이 필요한 경우 스토리지 관리자(roles/storage.admin) 역할 대신 스토리지 폴더 관리자(roles/storage.folderAdmin) 역할을 부여합니다.

다음 단계