기본 액세스 수준 만들기

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

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

시작하기 전에

기본 액세스 수준 만들기

Console

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

  1. Cloud Console에서 Access Context Manager 페이지를 엽니다.

    Access Context Manager 페이지 열기

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

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

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

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

      기본적으로 기본 모드에서 조건을 만듭니다. 고급 모드를 사용하여 조건을 만들려면 커스텀 액세스 수준 만들기를 참조하세요.

    2. 조건 섹션에서 속성 추가를 클릭한 다음 조건에 추가할 속성을 선택합니다.

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

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

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

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

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

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

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

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

    5. 조건 섹션에서 조건 결합 옵션을 사용하여 액세스 수준에서 요청이 모든 액세스 수준 조건을 충족해야 하는지(AND) 또는 조건 중 하나만 충족해야 하는지(OR)를 지정합니다.

    6. 저장을 클릭합니다.

gcloud

시작하기 전에

gcloud 명령줄 도구를 사용하여 액세스 수준을 만들려면 gcloud access-context-manager levels create 명령어를 사용합니다.

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

여기에서

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

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

    옵션
    basic-level-spec

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

    title

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

    combine-function

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

    유효한 값: AND, OR

    description

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

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

선택적으로 gcloud-wide 플래그를 포함할 수 있습니다.

basic-level-spec .yaml 파일

gcloud 명령줄 도구를 사용하여 액세스 수준을 작성할 때 basic-level-spec 옵션에 .yaml 파일을 제공해야 합니다. .yaml 파일은 액세스 수준의 조건을 하나 이상 정의합니다. 조건에는 속성이 최소한 한 개 이상 포함되어야 합니다.

.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'

API

시작하기 전에

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

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

여기에서

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

요청 본문

요청 본문에는 새 액세스 수준에 원하는 조건을 지정하는 AccessLevel 리소스가 포함되어야 합니다.

응답 본문

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

구현 예

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

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

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

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

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

Console

  1. Cloud Console에서 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
    

    여기에서

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

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

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

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

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/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_NAME/accessLevels
    

    여기에서

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

네트워크의 장치별 액세스 제한

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

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

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

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

Console

  1. Cloud Console에서 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
    

    여기에서

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

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

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

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

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/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_NAME/accessLevels
    

    여기에서

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

사용자 또는 서비스 계정별 액세스 제한

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

이 예에서는 다른 액세스 수준의 기준에 맞지 않는 특정 사용자 및 서비스 계정에 액세스 권한을 부여하는 방법을 설명합니다. 이 예에서는 다른 액세스 수준에 지정된 조건에 관계없이 프로젝트 서비스에 대한 액세스 권한을 제공하려는 시스템 관리자와 서비스 계정이 있다고 가정합니다.

Console

현재 Cloud Console은 액세스 수준에 구성원을 추가할 수 없습니다. 액세스 수준에 구성원을 추가하려면 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. 구성원에게 적용하지 않을 액세스 수준을 나열하는 조건을 추가합니다. 4단계에서 조합 함수를 OR로 설정하여 무효화합니다.

    이 예시에서는 액세스 수준 이름이 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. 액세스 수준을 만듭니다.

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

    여기에서

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

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

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

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

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

    Create request issued for: NAME
    Waiting for operation [accessPolicies/POLICY_NAME/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. 구성원에게 적용하지 않을 액세스 수준을 나열하는 조건을 추가합니다. 다음 단계에서 조합 함수를 OR로 설정하면 무효화됩니다.

    이 예시에서는 액세스 수준 이름이 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_NAME/accessLevels
    

    여기에서

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