액세스 수준 관리

이 페이지에서는 기존 액세스 수준을 관리하는 방법을 설명합니다. 다음과 같은 작업을 할 수 있습니다.

시작하기 전에

  • Google Cloud CLI를 사용하기 위한 기본 액세스 정책을 설정합니다.

    -또는-

    정책 이름 가져오기. gcloud CLI를 사용하고 API를 호출하는 명령어에는 정책 이름이 필요합니다. 기본 액세스 정책을 설정하면 gcloud CLI에 정책을 지정할 필요가 없습니다.

  • 조직 수준에서 액세스 수준을 관리할 수 있게 해주는 Identity and Access Management(IAM) 역할이 있는지 확인합니다. 관리자에게 다음 역할 중 하나 또는 동일한 권한을 갖는 커스텀 역할을 부여하도록 요청합니다.

액세스 수준 나열

콘솔

모든 액세스 수준을 나열하려면 Cloud de Confiance 콘솔에서 Access Context Manager 페이지를 열고 메시지가 표시되면 조직을 선택합니다. 이 페이지에는 각 액세스 수준의 구성 세부정보와 함께 조직의 액세스 수준이 그리드에 표시됩니다.

Access Context Manager 페이지 열기

gcloud

list 명령어를 사용하여 모든 액세스 수준을 나열할 수 있습니다.

gcloud access-context-manager levels list \
  [--policy=POLICY_NAME]

다음을 바꿉니다.

  • POLICY_NAME: 조직의 액세스 정책 이름입니다. 이 값은 기본 액세스 정책을 설정하지 않은 경우에만 필요합니다.

출력은 다음과 비슷합니다.

NAME             TITLE                  LEVEL_TYPE
Device_Trust     Device_Trust Extended  Basic
Service_Group_A  Service_Group_A        Basic

API

정책의 모든 액세스 수준을 나열하려면 accessLevels.list를 호출합니다.

GET https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels

다음을 바꿉니다.

  • POLICY_NAME: 조직의 액세스 정책 이름입니다.

요청 본문

요청 본문은 비어 있어야 합니다.

선택적 매개변수

선택적으로 다음 쿼리 매개변수 중 하나 이상을 포함합니다.

매개변수
pageSize

number

기본적으로 accessLevels.list에서 반환하는 액세스 수준 목록은 페이지로 나눠집니다. 각 페이지는 최대 100개의 액세스 수준으로 제한됩니다.

이 매개변수를 사용하면 페이지별로 반환되는 액세스 수준의 수를 수정할 수 있습니다.

pageToken

string

호출에서 반환된 액세스 수준 수가 페이지 크기를 초과하면 응답 본문에 페이지 토큰이 포함됩니다.

후속 호출에서 이 매개변수를 사용하면 결과의 다음 페이지를 가져올 수 있습니다.

accessLevelFormat

enum(LevelFormat)

일반적으로 액세스 수준은 BasicLevel 또는 CustomLevel 중 하나로 정의된 대로 반환됩니다.

이 매개변수 값을 CEL로 지정하면 Cloud Common Expression Language에서 BasicLevels를 CustomLevels로 반환할 수 있습니다.

응답 본문

호출이 성공하면 호출의 응답 본문에 액세스 수준을 나열하는 AccessLevels 객체와 nextPageToken 문자열이 포함됩니다. nextPageToken은 반환된 액세스 수준 수가 페이지 크기를 초과한 경우에만 값을 갖습니다. 그렇지 않으면 nextPageToken은 빈 문자열로 반환됩니다.

액세스 수준 나열(형식 지정됨)

gcloud CLI를 사용하여 YAML 또는 JSON 형식으로 액세스 수준 목록을 가져올 수 있습니다.

형식이 지정된 액세스 수준 목록을 가져오려면 list 명령어를 사용합니다.

gcloud access-context-manager levels list \
  --format=FORMAT \
  [--policy=POLICY_NAME]

다음을 바꿉니다.

  • FORMAT: 다음 값 중 하나입니다.

    • list(YAML 형식)

    • json(JSON 형식)

  • POLICY_NAME: 조직의 액세스 정책 이름입니다. 이 값은 기본 액세스 정책을 설정하지 않은 경우에만 필요합니다.

YAML 출력은 다음과 비슷합니다.

- basic: {'conditions': [{'ipSubnetworks': ['192.0.2.0/24']}]}
  description: Level for corp access.
  name: accessPolicies/123456789012/accessLevels/corp_level
  title: Corp Level
- basic: {'combiningFunction': 'OR', 'conditions': [{'ipSubnetworks': ['192.0.2.0/24']}]}
  description: Level for net access.
  name: accessPolicies/123456789012/accessLevels/net_level
  title: Net Level

JSON 출력은 다음과 비슷합니다.

[
  {
    "basic": {
      "conditions": [
        {
          "ipSubnetworks": [
            "192.0.2.0/24"
          ]
        }
      ]
    },
    "description": "Level for corp access.",
    "name": "accessPolicies/123456789012/accessLevels/corp_level",
    "title": "Corp Level"
  },
  {
    "basic": {
      "combiningFunction": "OR",
      "conditions": [
        {
          "ipSubnetworks": [
            "192.0.2.0/24"
          ]
        }
      ]
    },
    "description": "Level for net access.",
    "name": "accessPolicies/123456789012/accessLevels/net_level",
    "title": "Net Level"
  }
]

액세스 수준 설명

콘솔

Cloud de Confiance 콘솔에서 액세스 수준을 나열하는 단계를 참조하세요. 액세스 수준을 나열하면 나타나는 그리드에서 세부정보가 제공됩니다.

gcloud

액세스 수준을 나열하면 해당 이름, 제목, 수준 유형만 제공됩니다. 특정 수준의 기능이 무엇인지 자세히 알아보려면 describe 명령어를 사용합니다.

gcloud access-context-manager levels describe LEVEL_NAME \
    [--policy=POLICY_NAME]

다음을 바꿉니다.

  • LEVEL_NAME: 설명하려는 액세스 수준의 이름입니다.

  • POLICY_NAME: 조직의 액세스 정책 이름입니다. 이 값은 기본 액세스 정책을 설정하지 않은 경우에만 필요합니다.

이 명령어를 실행하면 수준에 대한 정보가 YAML 형식으로 출력됩니다. 예를 들어 해당 수준에서 액세스를 특정 운영체제 버전으로 제한하면 출력은 다음과 비슷합니다.

basic:
  conditions:
  - devicePolicy:
      allowedEncryptionStatuses:
      - ENCRYPTED
      osConstraints:
      - minimumVersion: 10.13.6
        osType: DESKTOP_MAC
      - minimumVersion: 10.0.18219
        osType: DESKTOP_WINDOWS
      - minimumVersion: 68.0.3440
        osType: DESKTOP_CHROME_OS
      requireScreenlock: true
name: accessPolicies/123456789012/accessLevels/Device_Trust
title: Device_Trust Extended

API

액세스 수준을 나열하면 수준의 이름, 제목, 유형만 제공됩니다. 액세스 수준에 대해 자세히 알아보려면 accessLevels.get을 호출합니다.

GET https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME

다음을 바꿉니다.

  • POLICY_NAME: 조직의 액세스 정책 이름입니다.

  • LEVEL_NAME: 설명하려는 액세스 수준의 이름입니다.

요청 본문

요청 본문은 비어 있어야 합니다.

선택적 매개변수

원하는 경우 accessLevelFormat 쿼리 매개변수를 포함합니다. 일반적으로 액세스 수준은 BasicLevel 또는 CustomLevel 중 하나로 정의된 대로 반환됩니다.

이 매개변수 값을 CEL로 지정하면 Cloud Common Expression Language에서 BasicLevels를 CustomLevels로 반환할 수 있습니다.

응답 본문

호출이 성공하면 호출의 응답 본문에 액세스 수준의 기능, 마지막으로 수준이 업데이트된 시간 등에 대한 세부정보가 있는 AccessLevel 리소스가 포함됩니다.

액세스 수준 업데이트

이 섹션에서는 개별 액세스 수준을 업데이트하는 방법을 설명합니다. 한 번의 작업으로 모든 조직의 액세스 수준을 업데이트하려면 액세스 수준 일괄 변경을 참조하세요.

콘솔

액세스 수준을 업데이트하려면 다음 단계를 따르세요.

  1. Cloud de Confiance 콘솔에서 Access Context Manager 페이지를 엽니다.

    Access Context Manager 페이지 열기

  2. 메시지가 표시되면 조직을 선택합니다.

  3. 그리드에서 업데이트할 액세스 수준 이름을 클릭합니다.

  4. 액세스 수준 편집 창에서 액세스 수준을 변경합니다.

    추가 또는 수정할 수 있는 속성의 전체 목록은 액세스 수준 속성을 참조하세요.

  5. 저장을 클릭합니다.

    기존 조건 업데이트 또는 수정 이외에도 새 조건을 추가하고 기존 조건에 새 속성을 추가할 수 있습니다.

gcloud

update 명령어를 사용하여 액세스 수준을 업데이트할 수 있습니다.

기본 액세스 수준:

gcloud access-context-manager levels update LEVEL_NAME \
    --basic-level-spec=FILE \
    [--policy=POLICY_NAME]

커스텀 액세스 수준:

gcloud access-context-manager levels update LEVEL_NAME \
    --custom-level-spec=FILE \
    [--policy=POLICY_NAME]

다음을 바꿉니다.

  • LEVEL_NAME: 업데이트하려는 액세스 수준의 이름입니다.

  • FILE: 액세스 수준의 조건 (기본 액세스 수준의 경우) 또는 단일 불리언 값으로 확인되는 CEL 표현식 (커스텀 액세스 수준의 경우)을 정의하는 YAML 파일의 이름입니다.

    기본 액세스 수준 조건에서 사용할 수 있는 속성의 전체 목록은 액세스 수준 속성을 참조하세요.

  • POLICY_NAME: 조직의 액세스 정책 이름입니다. 이 값은 기본 액세스 정책을 설정하지 않은 경우에만 필요합니다.

  • 다음 옵션 중 하나 이상을 포함할 수 있습니다.

    옵션
    combine-function

    이 옵션은 기본 액세스 수준에만 사용됩니다.

    조건 결합 방법을 지정합니다.

    유효한 값: AND, OR

    description

    긴 형식으로 된 액세스 수준의 설명입니다.

    title

    짧은 형식으로 된 액세스 수준 제목입니다. 액세스 수준 제목은 Cloud de Confiance 콘솔에 표시됩니다.

    gcloud-wide 플래그를 포함할 수 있습니다.

명령어 예

gcloud access-context-manager levels update Device_Trust \
    --basic-level-spec=corpdevspec.yaml \
    --combine-function=OR \
    --description='Access level that conforms to updated corporate spec.' \
    --title='Device_Trust Extended' \
    --policy=123456789012

API

액세스 수준을 업데이트하려면 accessLevels.patch를 호출합니다.

PATCH https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME?updateMask=FIELDS

다음을 바꿉니다.

  • POLICY_NAME: 조직의 액세스 정책 이름입니다.

  • LEVEL_NAME: 업데이트하려는 액세스 수준의 이름입니다.

  • FIELDS: 업데이트 중인 정규화된 필드 이름의 쉼표로 구분된 목록입니다.

요청 본문

요청 본문에는 액세스 수준에 적용할 변경사항을 지정하는 AccessLevel 리소스가 포함되어야 합니다.

응답 본문

호출이 성공하면 호출의 응답 본문에 패치 작업에 대한 세부정보를 제공하는 Operation 리소스가 포함됩니다.

액세스 수준 삭제

이 섹션에서는 Access Context Manager 액세스 수준을 삭제하는 방법을 설명합니다. 액세스 수준을 삭제하는 과정은 다음 두 단계로 구성됩니다.

  1. 액세스 수준 종속 항목을 확인합니다.

  2. 개별 액세스 수준을 삭제합니다.

액세스 수준 종속 항목 확인

액세스 수준을 삭제하기 전에 다른 액세스 수준, VPC 서비스 제어 서비스 경계, Google Workspace 컨텍스트 인식 액세스 정책, Cloud de Confiance 액세스 바인딩 또는 IAM 조건에서 참조되지 않는지 확인합니다.

삭제하려는 액세스 수준을 참조하는 모든 액세스 수준을 찾으려면 다음을 수행합니다.

  1. jq가 설치되어 있는지 확인합니다. jq가 설치되었는지 확인하려면 jq --version를 실행합니다. 필요한 경우 jq를 설치합니다.

  2. 액세스 수준 종속 항목을 확인합니다. 이 명령어는 모든 액세스 수준을 나열한 다음 jq를 사용하여 기본 또는 커스텀 수준 정의에서 LEVEL_NAME를 참조하는 액세스 수준을 필터링합니다.

    echo "Searching for Access Levels referencing: accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME"
    echo ""
    
    gcloud access-context-manager levels list \
      --policy="POLICY_NAME" \
      --format=json | \
    jq -r '
      .[] |
      select(
        # Check basic levels: Is the target access level present as an element in any requiredAccessLevels array?
        ([(.basic.conditions // [])[] | (.requiredAccessLevels // []) | index("accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME") != null] | any)
        or
        # Check custom levels: Does the expression string contain the target access level?
        ((.custom.expr.expression // "") | (contains("accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME") or contains("levels.LEVEL_NAME")))
      ) |
      "  - \(.title) (Name: \(.name))"
    '
    
    echo ""
    echo "If any levels are listed, they reference LEVEL_NAME. You must update these referencing levels before you delete LEVEL_NAME."

    다음을 바꿉니다.

    • POLICY_NAME: 조직의 액세스 정책 이름입니다. 이 값은 기본 액세스 정책을 설정하지 않은 경우에만 필요합니다.

    • LEVEL_NAME: 삭제하려는 액세스 수준의 이름입니다(예: my_level).

    출력에는 accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME 또는 levels.LEVEL_NAME를 참조하는 모든 액세스 수준이 title 및 name와 함께 나열됩니다. 이러한 액세스 수준에는 다음이 포함됩니다.

    • 기본 수준(accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME가 requiredAccessLevels에 나열됨)

    • custom.expr.expression 문자열에 accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME 또는 levels.LEVEL_NAME가 나열된 맞춤 수준

  3. 명령어가 참조 액세스 수준을 나열하는 경우 먼저 해당 수준을 업데이트하여 종속 항목을 삭제해야 합니다. 자세한 내용은 액세스 수준 업데이트를 참조하세요.

모든 참조가 삭제되면 개별 액세스 수준을 삭제할 수 있습니다.

개별 액세스 수준 삭제

콘솔

액세스 수준을 삭제하려면 다음 단계를 따르세요.

  1. Cloud de Confiance 콘솔에서 Access Context Manager 페이지를 엽니다.

    Access Context Manager 페이지 열기

  2. 메시지가 표시되면 조직을 선택합니다.

  3. 그리드에서 삭제할 액세스 수준의 행에 있는 버튼을 클릭합니다.

  4. 삭제를 클릭합니다.

  5. 대화상자가 나타나면 액세스 수준을 삭제할지 확인합니다.

gcloud

액세스 수준을 삭제하려면 다음 단계를 따르세요.

  1. delete 명령어를 사용하여 액세스 수준을 삭제합니다.

    gcloud access-context-manager levels delete LEVEL_NAME \
        [--policy=POLICY_NAME]

    다음을 바꿉니다.

    • LEVEL_NAME: 삭제하려는 액세스 수준의 이름입니다.

    • POLICY_NAME: 조직의 액세스 정책 이름입니다. 이 값은 기본 액세스 정책을 설정하지 않은 경우에만 필요합니다.

  2. 액세스 수준을 삭제할지 확인합니다.

    예를 들면 다음과 같습니다.

    You are about to delete level Device_Trust
    
    Do you want to continue (Y/n)?
    

    다음과 비슷한 출력이 표시됩니다.

    Waiting for operation [accessPolicies/123456789012/accessLevels/Device_Trust/delete/1531171874311645] to complete...done.
    Deleted level [Device_Trust].
    

API

액세스 수준을 삭제하려면 accessLevels.delete를 호출합니다.

DELETE https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY_NAME/accessLevels/LEVEL_NAME

다음을 바꿉니다.

  • POLICY_NAME: 조직의 액세스 정책 이름입니다.

  • LEVEL_NAME: 삭제할 액세스 수준의 이름입니다.

요청 본문

요청 본문은 비어 있어야 합니다.

응답 본문

호출이 성공하면 호출의 응답 본문에 삭제 작업에 대한 세부정보를 제공하는 Operation 리소스가 포함됩니다.