기기 기반 액세스 수준 만들기

이 문서에서는 관리자가 Access Context Manager를 사용하여 기기 속성(기기 기반 액세스 수준)을 기준으로 액세스 수준을 만드는 방법을 보여줍니다.

액세스 수준은 요청에 대한 컨텍스트 정보를 기준으로 리소스에 대한 액세스를 허용하는 데 사용되는 속성 집합입니다. 관리자는 엔드포인트 확인으로 수집된 기기 속성을 사용해서 기본 액세스 수준 또는 커스텀 액세스 수준을 만들 수 있습니다.

시작하기 전에

액세스 수준 만들기

콘솔

  1. Google Cloud 콘솔에서 Access Context Manager 페이지로 이동합니다.

    Access Context Manager로 이동

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

  3. Access Context Manager 페이지에서 액세스 수준 만들기를 클릭합니다.

  4. 새 액세스 수준 창에서 기본 액세스 수준 또는 커스텀 액세스 수준을 만듭니다. 자세한 안내를 보려면 필요한 섹션을 확장합니다.

    기본 액세스 수준 만들기

    1. 액세스 수준 제목 상자에 액세스 수준의 제목을 입력합니다.

      제목은 최대 50자여야 하고 문자로 시작해야 하며 숫자, 문자, 밑줄, 공백만 포함할 수 있습니다.

    2. 조건 만들기 섹션에서 기본 모드를 선택합니다.

      .
    3. 조건 섹션에서 기기 속성을 선택합니다.
      1. 장치 정책을 클릭합니다.
      2. 필요한 속성을 선택합니다.

        예를 들어 기기에 관리자 승인을 시행하려면 관리자 승인 필요를 선택합니다.

    4. 저장을 클릭합니다.

    새로 생성된 액세스 수준이 Access Context Manager 페이지에 표시됩니다.

    커스텀 액세스 수준 만들기

    1. 액세스 수준 제목 상자에 액세스 수준의 제목을 입력합니다.

      제목은 최대 50자여야 하고 문자로 시작해야 하며 숫자, 문자, 밑줄, 공백만 포함할 수 있습니다.

    2. 조건 만들기 섹션에서 고급 모드를 선택합니다.
    3. 조건 섹션에 커스텀 액세스 수준의 표현식을 입력합니다. 조건은 단일 부울 값으로 확인되어야 합니다.

      CEL 표현식에 사용 가능한 기기 속성을 찾으려면 엔드포인트 확인으로 수집된 기기 속성을 참조하세요.

      다음 CEL 표현식은 암호화된 기기에서만 액세스할 수 있습니다.

      device.encryption_status == DeviceEncryptionStatus.ENCRYPTED

      Common Expression Language(CEL) 지원 및 커스텀 액세스 수준에 대한 예시와 자세한 내용은 커스텀 액세스 수준 사양을 참조하세요.

    4. 저장을 클릭합니다.

    새로 생성된 액세스 수준이 Access Context Manager 페이지에 표시됩니다.

gcloud CLI

액세스 수준을 만들려면 gcloud access-context-manager levels create 메서드를 사용합니다.

  1. .yaml 파일을 만듭니다.

    • 기본 액세스 수준의 경우 액세스 수준에 대해 기기 정책 속성을 지정합니다.

      예: 암호화된 기기 스토리지를 사용하는 사용자로 액세스 대상을 제한하려면 .yaml 파일에 다음을 입력합니다.

        - devicePolicy:
            allowedEncryptionStatuses
              - ENCRYPTED
      
    • 커스텀 액세스 수준의 경우 단일 키-값 쌍으로 형식이 지정된 CEL 표현식(expression: "CEL_EXPRESSION")을 지정합니다.

      예: 기기 스토리지가 암호화되고 기기가 승인된 상태인 사용자로 액세스 대상을 제한하려면 .yaml 파일에 다음을 입력합니다.

      expression: "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED && device.is_admin_approved_device"
      

    기기 정책 액세스 수준 속성과 YAML 형식의 목록은 기기 정책 속성을 참조하세요. 모든 가능한 속성이 나와 있는 포괄적인 YAML 파일은 이 액세스 수준 YAML 파일 예시를 참조하세요.

    커스텀 수준 사양에 사용 가능한 기기 속성을 찾으려면 엔드포인트 확인으로 수집된 기기 속성을 참조하세요.

  2. 액세스 수준을 만듭니다.

    • 기본 액세스 수준의 경우 다음 명령어를 실행합니다.

      gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
      --title=TITLE \
      --basic-level-spec=FILE_NAME.yaml\
      --policy=POLICY_NAME
      
    • 커스텀 액세스 수준의 경우 다음 명령어를 실행합니다.

      gcloud access-context-manager levels create ACCESS_LEVEL_NAME \
      --title=TITLE \
      --custom-level-spec=FILE_NAME.yaml\
      --policy=POLICY_NAME
      

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

    • ACCESS_LEVEL_NAME은 액세스 수준의 고유한 이름입니다. accessPolicies/POLICY_ID/accessLevels/LEVEL_ID 형식이어야 합니다.

    • LEVEL_ID는 액세스 수준의 이름입니다. 이름은 최대 50자여야 하고 문자로 시작해야 하며, 숫자, 문자, 밑줄만 포함할 수 있습니다.

    • TITLE은 인간이 읽을 수 있는 제목입니다. 이 제목은 정책에 고유해야 합니다.

    • FILE_NAME.yaml 파일의 이름입니다. 기본 액세스 수준의 경우 기기 정책 속성을 포함합니다. 커스텀 액세스 수준의 경우 단일 키-값 쌍 `expression: "CEL_EXPRESSION" 형식인 CEL 표현식을 포함합니다.

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

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

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/accessLevels/NAME/create/1521594488380943] to complete...done.
    Created level NAME.
    

API

accessPolicies.accessLevels.create 메서드를 사용하여 액세스 수준을 만듭니다.

기본 액세스 수준 만들기

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • POLICY_ID: 조직의 액세스 정책 ID입니다.
  • LEVEL_ID: 액세스 수준의 이름입니다. 이름은 최대 50자여야 하고 문자로 시작해야 하며, 숫자, 문자, 밑줄만 포함할 수 있습니다.
  • ACCESS_LEVEL_NAME: 액세스 수준의 고유한 이름입니다. accessPolicies/POLICY_ID/accessLevels/LEVEL_ID 형식이어야 합니다.
  • TITLE: 인간이 읽을 수 있는 제목입니다. 이 제목은 정책에 고유해야 합니다.
  • DESCRIPTION: 액세스 수준 및 사용에 대한 설명입니다.
  • CONDITION: 부여할 액세스 수준에 대한 요구사항 목록입니다.

HTTP 메서드 및 URL:

POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels

JSON 요청 본문:


For basic access levels:

{
"name": ACCESS_LEVEL_NAME,
"title": TITLE,
  "description": DESCRIPTION,

  "basic": {
  "conditions": [
    {
    CONDITION
    }
   ],
  }
 },
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.


{
  "name": "operations/accessPolicies/84961948973/accessLevels/deviceEncrypted/create/1666896068847514",
  "metadata": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel",
    "name": "accessPolicies/84961948973/accessLevels/deviceEncrypted",
    "title": "accessPolicies/84961948973/accessLevels/deviceEncrypted",
    "basic": {
      "conditions": [
        {
          "devicePolicy": {
            "allowedEncryptionStatuses": [
              "ENCRYPTED"
            ]
          }
        }
      ]
    }
  }
}

커스텀 액세스 수준 만들기

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • POLICY_ID: 조직의 액세스 정책 ID입니다.
  • LEVEL_ID: 액세스 수준의 이름입니다. 이름은 최대 50자여야 하고 문자로 시작해야 하며, 숫자, 문자, 밑줄만 포함할 수 있습니다.
  • ACCESS_LEVEL_NAME: 액세스 수준의 고유한 이름입니다. accessPolicies/POLICY_ID/accessLevels/LEVEL_ID 형식이어야 합니다.
  • TITLE: 인간이 읽을 수 있는 제목입니다. 이 제목은 정책에 고유해야 합니다.
  • DESCRIPTION: 액세스 수준 및 사용에 대한 설명입니다.
  • CEL_EXPRESSION: 불리언으로 평가되는 CEL 표현식입니다.

HTTP 메서드 및 URL:

POST https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels

JSON 요청 본문:


{
"name": ACCESS_LEVEL_NAME,
"title": TITLE,
  "description": DESCRIPTION,

  "custom": {
   "conditions": [
     {
      "expr": {
     CEL_EXPRESSION
     }
    }
   ]
  }
 },
}

요청을 보내려면 다음 옵션 중 하나를 선택합니다.

curl

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels"

PowerShell

요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://accesscontextmanager.googleapis.com/v1/{parent=accessPolicies/POLICY_ID}/accessLevels" | Select-Object -Expand Content

다음과 비슷한 JSON 응답이 표시됩니다.


{
  "name": "operations/accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName/create/1666936427127701",
  "metadata": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessContextManagerOperationMetadata"
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.identity.accesscontextmanager.v1.AccessLevel",
    "name": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelName",
    "title": "accessPolicies/84961948973/accessLevels/sampleCustomAccessLevelTitle",
    "custom": {
      "expr": {
        "expression": "device.encryption_status == DeviceEncryptionStatus.ENCRYPTED"
      }
    }
  }
}

여러 조건 및 액세스 수준 종속 항목을 사용하여 액세스 수준 만들기에 대한 자세한 내용은 기본 액세스 수준 만들기를 참조하세요.

다음 단계