액세스 수준을 사용하여 액세스 정책 정의

이 페이지에서는 액세스 수준을 사용하여 컨텍스트 인식 액세스 정책을 정의하는 방법을 설명합니다.

액세스 수준은 출처에 따라 요청에 할당되는 일련의 속성입니다. 기기 유형, IP 주소, 사용자 ID와 같은 정보를 사용하여 부여할 액세스 수준을 지정할 수 있습니다. 예를 들어 회사 네트워크 내부에서 시작된 연결에는 High_Trust 수준을 할당하고 승인된 운영체제를 실행하는 외부 기기에는 Medium_Trust 수준을 할당할 수 있습니다.

액세스 정책은 액세스 수준 및 서비스 경계와 같은 모든 Access Context Manager 리소스의 컨테이너입니다.

액세스 수준 및 액세스 정책에 대한 자세한 내용은 Access Context Manager 개요를 참고하세요.

시작하기 전에

액세스 수준을 정의할 때 다음과 같은 제한사항이 적용됩니다.

  • IP 주소를 Docker 연결의 속성으로 사용할 수 없으며 kubectl 또는 관리형 Looker 인스턴스를 사용하여 비공개 클러스터에 연결할 때 비공개 IP 주소를 사용할 수도 없습니다.
  • Looker Studio는 Access Context Manager 정책과 관계없이 항상 Google Cloud API에 대한 제한 없는 액세스가 허용됩니다.
  • Google 이외의 OAuth 클라이언트 애플리케이션에서는 기기 속성을 사용할 수 없습니다.

액세스 수준을 사용하여 정책 정의

콘솔

기본 액세스 수준을 만듭니다.

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

    Access Context Manager 페이지로 이동

  2. 메시지가 표시되면 프로젝트를 선택합니다.

  3. Access Context Manager 페이지에서 새로 만들기를 클릭합니다.

  4. 새 액세스 수준 창에서 다음을 수행합니다.

    1. 액세스 수준 제목 필드에 액세스 수준의 제목을 입력합니다. 제목은 최대 50자여야 하고, 문자로 시작해야 하며 숫자, 문자, 밑줄, 공백만 포함할 수 있습니다.

    2. 조건 섹션에서 추가할 속성 유형의 추가 버튼을 클릭한 다음 해당 속성에 적용할 값을 제공합니다.

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

      예를 들어 액세스 수준에서 요청이 들어오는 네트워크 내 위치를 고려하기를 원한다면 IP 서브네트워크 속성을 선택합니다.

      동일한 조건에 속성 여러 개를 추가하려면 이 단계를 반복합니다. 한 조건에 속성이 여러 개 있으면 액세스 요청이 모든 속성을 충족시켜야 합니다.

      한 액세스 수준 조건에는 각 유형의 속성 하나를 포함할 수 있습니다. 일부 속성에는 기기 정책 속성과 같은 추가 옵션이 포함됩니다.

      액세스 수준은 사용자 ID를 기반으로 조건을 지원합니다. 그러나 조건에 ID를 추가하려면 gcloud CLI 또는 API를 사용하여 액세스 수준을 만들거나 업데이트해야 합니다.

    3. 조건 충족 시 반환 옵션을 사용하여 조건에서 요청이 지정된 모든 속성을 충족해야 하는지(TRUE) 또는 요청이 해당 속성을 제외한 다른 속성을 충족해야 하는지(FALSE) 여부를 지정합니다.

      예를 들어 네트워크의 특정 IP 주소 범위에서 오는 요청을 거부하려면 IP 서브네트워크 속성을 사용하여 IP 주소 범위를 지정한 후 조건을 FALSE로 설정합니다.

    4. (선택사항) 다른 조건 추가를 클릭하여 액세스 수준에 조건을 추가한 후 이전 두 단계를 반복합니다.

      예를 들어 더 넓은 IP 주소 범위 내의 IP 주소 하위 집합에 대한 액세스를 거부하려면 새 조건을 만들고 IP 서브네트워크 속성에 하위 IP 주소 범위를 지정한 후 FALSE를 반환하도록 조건을 설정합니다.

      동일한 액세스 수준에 조건을 여러 개 추가하려면 이 단계를 반복합니다.

    5. 조건을 2개 이상 만든 경우 다음과 조건 결합을 사용하여 액세스 수준에서 요청이 하나 이상의 조건을 충족해야 하는지(OR) 또는 모든 조건을 충족해야 하는지(AND)를 지정합니다.

    6. 저장을 클릭합니다.

gcloud

조직에 액세스 정책이 없는 경우 계속하기 전에 액세스 정책을 만듭니다.

gcloud access-context-manager levels create 명령어를 사용하여 액세스 수준을 만듭니다.

gcloud access-context-manager levels create LEVEL_NAME OPTIONS \
    --policy=POLICY

다음을 바꿉니다.

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

  • OPTIONS: 다음 표의 필수 옵션입니다.

    옵션
    basic-level-spec

    액세스 수준에 조건을 하나 이상 지정하는 YAML 파일입니다.

    title

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

    combine-function

    (선택사항) 조건 조합 방법을 결정합니다.

    유효한 값: AND, OR

    description

    (선택사항) 긴 형식으로 된 액세스 수준의 설명입니다.

  • POLICY: 조직의 액세스 정책 ID입니다. 기본 정책이 설정된 경우 이 매개변수는 선택사항입니다.

원하는 경우 gcloud 플래그를 포함할 수 있습니다.

basic-level-spec YAML 파일

gcloud CLI를 사용하여 액세스 수준을 만들 때는 basic-level-spec 옵션에 YAML 파일을 제공해야 합니다. YAML 파일은 액세스 수준의 조건을 하나 이상 정의합니다. 조건에는 속성이 최소한 한 개 이상 포함되어야 합니다. 조건에 속성이 2개 이상 있으면 negate 속성이 해당 조건에 포함되어 있는지 여부에 따라 AND 연산 (모두 true여야 함) 또는 NAND 연산 (아무것도 true일 수 없음)으로 결합됩니다.

YAML 파일에 포함할 수 있는 속성의 전체 목록은 액세스 수준 속성을 참고하세요.

액세스 수준 및 YAML에 대한 자세한 내용은 액세스 수준의 YAML 예를 참조하세요.

명령어 예

gcloud access-context-manager levels create Device_Trust \
    --basic-level-spec=corpdevspec.yaml \
    --combine-function=AND \
    --description='Access level that conforms to corporate spec.' \
    --title='Device_Trust Extended' \
    --policy=1521580097614100

API

조직에 액세스 정책이 없는 경우 계속하기 전에 액세스 정책을 만듭니다.

액세스 수준을 만들려면 accessLevels.create를 호출합니다.

POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels

POLICY는 조직의 액세스 정책 ID입니다.

요청 본문

요청 본문에는 새 액세스 수준에 원하는 조건을 지정하는 AccessLevel 리소스가 포함되어야 합니다. 각 Condition에는 negate 필드가 true로 설정되었는지 여부에 따라 AND 연산(모두 true여야 함) 또는 NAND 연산(아무것도 true가 될 수 없음)으로 평가되는 1개 이상의 속성이 있습니다. 평가 결과에 따라 조건이 충족되는지 여부가 결정됩니다.

응답 본문

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

일반적인 정책 구성

다음 예에서는 조직에서 액세스 수준을 구현할 수 있는 몇 가지 실용적인 방법을 설명합니다. 이 예에서는 조직에 액세스 정책이 이미 있다고 가정합니다.

회사 네트워크의 액세스 제한

이 예에서는 지정된 IP 주소 범위(예: 회사 네트워크 내의 주소)에서만 액세스를 허용하는 액세스 수준 조건을 만드는 방법을 설명합니다.

액세스 권한이 부여되는 IP 주소 범위를 제한함으로써 조직 내부 또는 외부 공격자의 데이터 유출을 더 어렵게 만들 수 있습니다.

이 예시에서는 내부 감사인 그룹이 sensitive-data라는 프로젝트의 Cloud Logging 서비스에 액세스할 수 있도록 허용하는 액세스 수준을 만든다고 가정합니다. 감사인의 모든 기기에는 203.0.113.0~203.0.113.127 사이의 서브넷 IP가 할당됩니다. 감사인이 사용하는 기기가 아닌 다른 기기는 이 서브넷에 할당되지 않습니다.

비공개 IP 주소 범위(예: 192.168.0.0/16 또는 172.16.0.0/12)를 사용하려면 내부 IP 주소에서 보호된 리소스에 대한 액세스 허용에서 추가 정보와 VPC 서비스 제어를 사용하는 구현 예시를 참조하세요.

콘솔

  1. Google Cloud 콘솔에서 Access Context Manager를 엽니다.

    Access Context Manager 페이지로 이동

  2. 메시지가 표시되면 프로젝트를 선택합니다.

  3. Chrome Enterprise Premium 페이지 상단에서 새로 만들기를 클릭합니다.

  4. 새 액세스 수준 창의 조건 섹션에서 속성 추가를 클릭한 후 IP 서브네트워크를 클릭합니다.

  5. IP 서브네트워크 상자에서 공개 IP 또는 비공개 IP를 선택합니다.

    • 공개 IP를 선택하면 CIDR 블록 형식의 IPv4 또는 IPv6 범위를 하나 이상 입력합니다.

      이 예시에서는 감사 기관으로만 액세스 권한을 제한하기 위해 IP 서브네트워크 상자에 203.0.113.0/25를 입력합니다.

    • 비공개 IP를 선택한 경우 VPC 네트워크 선택을 클릭합니다. 가져오기 옵션 목록에 있는 세 가지 옵션 중 하나를 사용하여 VPC 네트워크를 지정할 수 있습니다.

      • 옵션 1:

        1. 조직의 VPC 네트워크 찾아보기를 선택하고 VPC 네트워크를 선택합니다.

        2. 선택한 VPC 네트워크 추가를 클릭합니다.

        3. IP 서브넷 선택을 클릭하고 서브넷을 선택합니다.

        4. IP 서브넷 추가를 클릭합니다.

      • 옵션 2:

        1. VPC 네트워크 주소 직접 입력을 선택하고 VPC 네트워크를 하나 이상 입력합니다.

        2. VPC 네트워크 추가를 클릭합니다.

        3. IP 서브넷 선택을 클릭하고 서브넷을 선택합니다.

        4. IP 서브넷 추가를 클릭합니다.

      • 옵션 3:

        1. CSV 파일 업로드(기존 네트워크 덮어쓰기)를 선택합니다.

          CSV 파일을 사용하여 액세스 수준에 VPC 네트워크와 서브넷을 추가하면 Access Context Manager에서 이전에 선택한 VPC 네트워크와 서브넷을 덮어씁니다.

        2. 찾아보기를 클릭하고 CSV 파일을 업로드합니다. CSV 파일에서 VPC 네트워크와 서브넷을 다음 형식으로 지정해야 합니다.

          VPC_NETWORK_NAME_1       | IP_RANGE_1       | IP_RANGE_2       | ...
          VPC_NETWORK_NAME_2       | .                | .                | ...
          .                        | .                | .                | ...
          .                        | .                | .                | ...
          
        3. 네트워크 가져오기를 클릭합니다.

          Access Context Manager는 CSV 파일을 사용하여 VPC 네트워크 주소IP 서브네트워크 상자에 각각 VPC 네트워크 이름과 서브넷 정보를 채웁니다.

      VPC 네트워크 이름 및 비공개 IP 주소 형식에 관한 자세한 내용은 액세스 수준에서 내부 IP 주소 사용을 참조하세요.

  6. 저장을 클릭합니다.

gcloud

  1. CIDR 블록 형식으로 된 IPv4 또는 IPv6 범위를 한 개 이상 포함하는 액세스 수준의 YAML 파일을 만듭니다.

    이 예에서는 감사인으로만 액세스 권한을 제한하기 위해 YAML 파일에 다음을 입력합니다.

    - ipSubnetworks:
      - 203.0.113.0/25
    

    비공개 IP 주소를 사용하려면 YAML 파일에 다음 정보를 입력해야 합니다.

    - vpcNetworkSources:
      - vpcSubnetwork:
          network: VPC_NETWORK_NAME
          vpcIpSubnetworks:
          - IP_RANGE
    

    VPC_NETWORK_NAMEIP_RANGE액세스 수준에서 내부 IP 주소 사용 섹션에 설명된 값으로 바꿉니다.

  2. 파일을 저장합니다. 이 예시에서 파일 이름은 CONDITIONS.yaml입니다.

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

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

    다음을 바꿉니다.

    • NAME: 액세스 수준의 고유한 이름입니다. 이 이름은 문자로 시작해야 하며 문자, 숫자, 밑줄만 포함할 수 있습니다.

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

    • POLICY: 조직의 액세스 정책 ID입니다. 기본 정책이 설정된 경우 이 매개변수는 선택사항입니다.

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

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

API

  1. CIDR 블록 형식으로 된 IPv4 또는 IPv6 범위가 한 개 이상 포함된 AccessLevel 리소스를 만들도록 요청 본문을 작성합니다.

    이 예에서는 감사인으로만 액세스 권한을 제한하기 위해 요청 본문에 다음을 입력합니다.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "ipSubnetworks": [
             "203.0.113.0/25"
           ]
         }
       ]
     }
    }

    다음을 바꿉니다.

    • NAME: 액세스 수준의 고유한 이름입니다. 이 이름은 문자로 시작해야 하며 문자, 숫자, 밑줄만 포함할 수 있습니다.

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

    비공개 IP 주소를 사용하려면 요청 본문에 다음 정보를 입력해야 합니다.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "vpcNetworkSources": [
            {
              "vpcSubnetwork": {
                "network": VPC_NETWORK_NAME,
                "vpcIpSubnetworks": [
                  IP_RANGE
                ]
              }
            }
           ]
         }
       ]
     }
    }

    VPC_NETWORK_NAMEIP_RANGE액세스 수준에 내부 IP 주소 사용 섹션에 설명된 값으로 바꿉니다.

  2. accessLevels.create를 호출하여 액세스 수준을 만듭니다.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY는 조직의 액세스 정책 ID입니다.

액세스 수준을 만든 후에는 액세스 바인딩을 사용하여 이를 적용해야 적용됩니다.

기기 속성별 액세스 제한

이 예에서는 특정 운영체제(OS) 버전과 같이 지정된 일련의 요구사항을 충족하는 기기에만 액세스 권한을 부여하는 액세스 수준을 만드는 방법을 설명합니다.

기기에 대한 정보는 엔드포인트 확인을 통해 Chrome Enterprise Premium에 제공됩니다. 액세스 권한 부여 여부 결정 시 확인할 수 있는 기준은 다음과 같습니다.

  • 화면 잠금이 사용 설정됨
  • 저장소 암호화가 사용 설정됨
  • 기기가 지정된 운영체제 종류 및 버전을 실행 중임

이 예에서는 조직에서 ChromeOS 또는 Windows가 설치된 머신만 사용한다고 가정합니다. 보안을 한층 강화하기 위해 다른 운영체제를 사용하는 사람이 액세스하지 못하도록 차단하는 액세스 수준을 만들려고 합니다. 또한 위험을 관리하기 위해 특정 버전의 OS만 액세스할 수 있도록 만들려고 합니다.

콘솔

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

    Access Context Manager 페이지로 이동

  2. 메시지가 표시되면 프로젝트를 선택합니다.

  3. Chrome Enterprise Premium 페이지 상단에서 새로 만들기를 클릭합니다.

  4. 새 액세스 수준 창의 조건 섹션에서 속성 추가를 클릭한 후 기기 정책을 클릭합니다.

  5. 기기 정책 속성을 추가합니다.

    1. OS 정책 추가를 클릭한 후 Chrome OS 정책을 클릭합니다.

    2. 최소 버전 상자에 허용할 ChromeOS의 최소 버전을 입력합니다.

    3. Windows OS 정책에 대해 1~2단계를 반복합니다.

  6. 저장을 클릭합니다.

gcloud

  1. OS 제약 조건이 있는 기기 정책이 포함된 액세스 수준의 YAML 파일을 만듭니다.

    이 예에서는 ChromeOS 및 Windows의 허용 가능한 최소 버전을 사용하는 기기만 허용하기 위해 YAML 파일에 다음을 입력합니다.

    - devicePolicy:
        osConstraints:
          - osType: DESKTOP_CHROME_OS
            minimumVersion: 11316.165.0
          - osType: DESKTOP_WINDOWS
            minimumVersion: 10.0.1809
    
  2. 파일을 저장합니다. 이 예시에서 파일 이름은 CONDITIONS.yaml입니다.

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

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

    다음을 바꿉니다.

    • NAME: 액세스 수준의 고유한 이름입니다. 이 이름은 문자로 시작해야 하며 문자, 숫자, 밑줄만 포함할 수 있습니다.

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

    • POLICY: 조직의 액세스 정책 ID입니다. 기본 정책이 설정된 경우 이 매개변수는 선택사항입니다.

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

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

API

  1. OS 제약 조건이 있는 기기 정책이 포함된 AccessLevel 리소스를 만드는 요청 본문을 작성합니다.

    이 예에서는 ChromeOS 및 Windows의 허용 가능한 최소 버전을 사용하는 기기만 허용하기 위해 요청 본문에 다음을 입력합니다.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "devicePolicy": {
             "osConstraints": [
               {
                 "osType": "DESKTOP_CHROME_OS",
                 "minimumVersion": "11316.165.0"
               },
               {
                 "osType": "DESKTOP_WINDOWS",
                 "minimumVersion": "10.0.1809"
               }
             ]
           {
         }
       ]
     }
    }

    다음을 바꿉니다.

    • NAME: 액세스 수준의 고유한 이름입니다. 이 이름은 문자로 시작해야 하며 문자, 숫자, 밑줄만 포함할 수 있습니다.

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

  2. accessLevels.create를 호출하여 액세스 수준을 만듭니다.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY는 조직의 액세스 정책 ID입니다.

액세스 수준을 만든 후에는 액세스 바인딩을 사용하여 이를 적용해야 적용됩니다.

유효한 인증서가 있는 신뢰할 수 있는 기업 기기에 대한 액세스 제한

인증서 기반 액세스(CBA)를 사용하여 Google Cloud 리소스 액세스를 위해 확인된 X.509 인증서를 요구할 수 있습니다. 추가 사용자 인증 정보는 기기 ID에 대한 더 강력한 신호를 제공하며, 액세스 권한을 부여하기 전에 사용자 인증 정보와 원래 기기 인증서가 모두 있어야 하므로 사용자 인증 정보 도난 또는 실수로 인한 손실로부터 조직을 보호할 수 있습니다.

계속하기 전에 Google Cloud 리소스에 액세스해야 하는 모든 기기에 엔드포인트 확인 Chrome 확장 프로그램 및 엔드포인트 확인 도우미 앱이 배포되었는지 확인합니다. 그러면 신뢰할 수 있는 기기가 되어 액세스 권한을 부여할 수 있습니다. 자세한 내용은 인증서 기반 액세스에 사용할 엔드포인트 확인 배포를 참고하세요.

인증서 기반 액세스가 필요한 정책을 만들려면 커스텀 액세스 수준 사양이 있는 액세스 수준이 있어야 합니다.

콘솔

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

    Access Context Manager 페이지로 이동

  2. 메시지가 표시되면 프로젝트를 선택합니다.

  3. 액세스 수준 만들기를 클릭합니다.

  4. 새 액세스 수준 창에서 고급 모드를 선택합니다. 이 모드를 사용하려면 Chrome Enterprise Premium 라이선스가 있어야 합니다.

  5. 조건 섹션의 CEL 표현식 상자에 다음 표현식을 입력합니다.

    certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE
    
  6. 저장을 클릭합니다.

gcloud

  1. 인증서 시행이 포함된 액세스 수준의 YAML 파일을 만듭니다.

    expression: "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE"
    
  2. 파일을 저장합니다. 이 예시에서 파일 이름은 CONDITIONS.yaml입니다.

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

    gcloud access-context-manager levels create NAME \
       --title TITLE \
       --basic-level-spec CONDITIONS.yaml \
       --policy=POLICY

다음을 바꿉니다.

  • NAME: 액세스 수준의 고유한 이름입니다. 이름은 문자로 시작해야 하며 문자, 숫자, 밑줄만 포함할 수 있습니다.

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

  • POLICY: 조직의 액세스 정책 ID입니다. 기본 정책이 설정된 경우 이 매개변수는 선택사항입니다.

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

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

API

  1. OS 제약 조건이 있는 기기 정책이 포함된 액세스 수준의 요청 본문 파일을 만듭니다.

    {
     "name": "require_certificate",
     "title": "Certificate-Based Access",
     "description": "An example certificate-based access level.",
     "custom": {
       "expr": {
         "expression": "certificateBindingState(origin, device) == CertificateBindingState.CERT_MATCHES_EXISTING_DEVICE",
         "title": "Require a valid certificate",
         "description": "Permits requests from a device with a valid mTLS certificate."
        }
      }
    }
  2. accessLevels.create를 호출하여 액세스 수준을 만듭니다.

    POST https://accesscontextmanager.googleapis.com/v1/accessPolicies/POLICY/accessLevels
    

    POLICY는 조직의 액세스 정책 ID입니다.

액세스 수준을 만든 후에는 액세스 결합을 사용하여 이를 적용해야 적용됩니다.