기본 액세스 수준 만들기

이 페이지에서는 일반적으로 기본 액세스 수준을 만드는 방법을 설명합니다. Google Cloud 콘솔에서 커스텀 액세스 수준을 만들고 고급 모드를 사용하려면 커스텀 액세스 수준 만들기를 참조하세요.

이 페이지에는 보다 집중적인 액세스 수준 구현이 포함되어 있습니다. 다음 예시를 참조하세요.

시작하기 전에

기본 액세스 수준 만들기

콘솔

기본 액세스 수준을 만들려면 다음 단계를 따르세요.

  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 명령줄 도구를 사용하여 액세스 수준을 만들려면 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-wide 플래그를 포함할 수 있습니다.

basic-level-spec YAML 파일

gcloud 명령줄 도구를 사용하여 액세스 수준을 작성할 때 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가 할당됩니다. 감사인이 사용하는 기기가 아닌 다른 기기는 이 서브넷에 할당되지 않습니다.

콘솔

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

    Access Context Manager 페이지 열기

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

  3. Access Context Manager 페이지의 맨 위에 있는 새 항목을 누릅니다.

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

  5. IP 서브네트워크 상자에 CIDR 블록으로 형식화된 IPv4 또는 IPv6 범위를 한 개 이상 입력합니다.

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

  6. 저장을 클릭합니다.

gcloud

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

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

    - ipSubnetworks:
      - 203.0.113.0/25
    
  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은 인간이 읽을 수 있는 제목입니다. 이 제목은 정책에 고유해야 합니다.

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

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

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

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

기기 속성별 액세스 제한

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

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

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

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

콘솔

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

    Access Context Manager 페이지 열기

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

  3. Access Context Manager 페이지의 맨 위에 있는 새 항목을 누릅니다.

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

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

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

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

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

  6. 저장을 클릭합니다.

gcloud

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

    이 예에서는 Chrome OS 및 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 리소스를 만드는 요청 본문을 작성합니다.

    이 예에서는 Chrome OS 및 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입니다.

사용자 또는 서비스 계정별 액세스 권한 부여

ID에 따라 액세스 권한을 부여하는 것은 Cloud Functions가 데이터에 액세스할 수 있도록 하는 등 서비스 계정과 함께 유용할 때가 많습니다.

이 예에서는 중첩된 액세스 수준의 예를 보여주기 위해 기존 액세스 수준을 포함하면서 특정 사용자 및 서비스 계정에 액세스 권한을 부여하는 방법을 설명합니다. 이 경우 지정된 사용자가 기존 액세스 수준에 지정된 조건을 충족하는지 여부에 관계없이 이 액세스 수준에 포함됩니다. 이 새로운 액세스 수준은 기존 액세스 수준보다 덜 제한적인 등급으로 간주될 수 있습니다.

콘솔

현재 Google Cloud 콘솔은 액세스 수준에 주 구성원을 추가할 수 없습니다. 액세스 수준에 주 구성원을 추가하려면 gcloud 명령줄 도구 또는 API를 사용해야 합니다.

gcloud

  1. 액세스 권한을 제공할 주 구성원을 나열하는 조건이 포함된 YAML 파일을 만듭니다.

    이 예시에서는 시스템 관리자(sysadmin@example.com)와 서비스 계정(service@project.iam.gserviceaccount.com)을 추가하려 합니다.

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
  2. 이 액세스 수준에 포함할 기존 액세스 수준을 나열하는 조건을 추가합니다.

    이 예시에서는 액세스 수준 이름이 Device_TrustIP_Trust이고 247332951433이 액세스 정책 이름이라고 가정합니다.

    - members:
        - user:sysadmin@example.com
        - serviceAccount:service@project.iam.gserviceaccount.com
    
    - requiredAccessLevels:
        - accessPolicies/247332951433/accessLevels/Device_Trust
        - accessPolicies/247332951433/accessLevels/IP_Trust
    
  3. 파일을 저장합니다. 이 예에서 이 파일의 이름은 CONDITIONS.yaml입니다.

  4. create 명령어를 사용하여 액세스 수준을 만듭니다.

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

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

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

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

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

    • combine-functionOR로 설정되어 있습니다. 기본값 AND에서는 모든 조건이 충족되어야 액세스 수준이 부여됩니다. 다른 조건은 충족되지 않더라도 OR 값이 주 구성원에게 액세스 권한을 부여합니다.

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

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

API

  1. 액세스 권한을 제공할 주 구성원을 나열하는 조건이 포함된 AccessLevel 리소스를 만드는 요청 본문을 작성합니다.

    이 예시에서는 시스템 관리자(sysadmin@example.com)와 서비스 계정(service@project.iam.gserviceaccount.com)을 추가하려 합니다.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         }
       ]
     }
    }
    

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

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

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

  2. 이 액세스 수준에 포함할 기존 액세스 수준을 나열하는 조건을 추가합니다.

    이 예시에서는 액세스 수준 이름이 Device_TrustIP_Trust이고 247332951433이 액세스 정책 이름이라고 가정합니다.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         },
         {
           "requiredAccessLevels": [
             "accessPolicies/247332951433/accessLevels/Device_Trust",
             "accessPolicies/247332951433/accessLevels/IP_Trust"
           ]
         }
       ]
     }
    }
    
  3. combiningFunctionOR로 설정합니다.

    combiningFunction, AND를 기본값으로 설정하면 모든 조건이 충족되어야만 액세스 수준이 부여됩니다. OR 값으로 설정하면 IP 주소나 다른 필수 액세스 수준에서 상속된 것과 같은 다른 조건이 충족되지 않더라도 주 구성원에게 액세스 권한이 부여됩니다.

    {
     "name": "NAME",
     "title": "TITLE",
     "basic": {
       "conditions": [
         {
           "members": [
             "user:sysadmin@example.com",
             "serviceAccount:service@project.iam.gserviceaccount.com"
           ]
         },
         {
           "requiredAccessLevels": [
             "accessPolicies/247332951433/accessLevels/Device_Trust",
             "accessPolicies/247332951433/accessLevels/IP_Trust"
           ]
         }
       ],
       "combiningFunction": "OR"
     }
    }
    
  4. accessLevels.create를 호출하여 액세스 수준을 만듭니다.

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

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

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