사용자 그룹에 인증서 기반 액세스 적용

이 페이지에서는 사용자 그룹을 기반으로 하는 컨텍스트 인식 액세스 정책을 사용하여 인증서 기반 액세스 (CBA)를 적용하는 방법을 설명합니다.

사용자 그룹에 CBA 액세스 수준을 바인딩하여 모든 Google Cloud 서비스에 대한 액세스를 제한할 수 있습니다. 이 제한은API를 호출하는 모든 클라이언트 애플리케이션에 적용됩니다. Google Cloud

원하는 경우 특정 클라이언트 애플리케이션에 제한사항을 적용하거나 특정 애플리케이션을 제외할 수 있습니다. 애플리케이션에는 서드 파티 애플리케이션과 Google에서 빌드한 퍼스트 파티 애플리케이션(예: Cloud Console 콘솔의 Google Cloud 및 Google Cloud SDK Google Cloud CLI)이 모두 포함됩니다.

시작하기 전에

CBA 액세스 수준을 만듭니다. 리소스에 대한 액세스를 결정할 때 인증서가 필요합니다.

사용자 그룹 만들기

사용자 그룹을 만들어 CBA 액세스 수준에 따라 액세스 권한을 부여해야 하는 구성원을 포함합니다.

Cloud 액세스 바인딩 관리자 역할 할당

사용자 그룹에 Cloud 액세스 바인딩 관리자 역할을 할당합니다.

조직 수준에서 IAM 권한을 추가할 수 있는 충분한 권한이 있어야 합니다. 최소한 조직 관리자Cloud 액세스 바인딩 관리자 역할이 필요합니다.

콘솔

  1. 콘솔에서 IAM 으로 이동합니다.

    IAM으로 이동

  2. 권한 탭에서 액세스 권한 부여를 클릭한 후 다음을 구성합니다.

    1. 새 주 구성원: 역할을 부여할 그룹을 지정합니다.
    2. 역할 선택 옵션에서 Access Context Manager > Cloud 액세스 바인딩 관리자를 선택합니다.
    3. 저장 을 클릭합니다.

gcloud

  1. 로그인:

    gcloud auth login
    
  2. 다음 명령어를 실행하여 GcpAccessAdmin 역할을 할당합니다.

    gcloud organizations add-iam-policy-binding ORG_ID \
      --member=user:EMAIL \
      --role=roles/accesscontextmanager.gcpAccessAdmin
    
    • ORG_ID는 조직의 ID입니다. 아직 조직 ID가 없으면 다음 명령어를 사용하여 찾을 수 있습니다.

       gcloud organizations list
      
    • EMAIL은 역할을 부여할 사용자 또는 그룹의 이메일 주소입니다.

사용자 그룹에 CBA 액세스 수준 바인딩

이 바인딩 옵션에서 CBA 액세스 수준은 지정된 사용자 그룹의 모든 클라이언트 애플리케이션에 적용됩니다.

  1. 콘솔에서 콘솔 및 API 액세스 정책 페이지로 이동합니다.

    콘솔 및 API 액세스 정책으로 이동

  2. 조직을 선택한 후 선택 을 클릭합니다.

  3. 액세스 관리 를 클릭하여 액세스 권한을 부여할 사용자 그룹을 선택합니다.

  4. 추가를 클릭한 후 다음을 구성합니다.

    1. 구성원 그룹: 액세스 권한을 부여할 그룹을 지정합니다. 아직 액세스 수준에 결합되지 않은 그룹만 선택할 수 있습니다.
    2. 액세스 수준 선택: 그룹에 적용할 CBA 액세스 수준을 선택합니다.
    3. 저장을 클릭합니다.

사용자 그룹 및 특정 애플리케이션에 CBA 액세스 수준 바인딩

클라이언트 인증서를 지원하는 애플리케이션과 같은 일부 사용 사례에서는 CBA 액세스 수준을 사용자 그룹에 바인딩하는 것이 너무 광범위할 수 있습니다. 이 옵션을 사용하여 클라이언트 인증서를 지원하는 애플리케이션에 CBA 액세스 수준을 적용할 수 있습니다.

다음 예에서는 CBA 액세스 수준을 Google Cloud 콘솔, gcloud CLI, 사용자의 OAuth 애플리케이션에 바인딩합니다.

  1. gcloud CLI에 로그인합니다.

    gcloud auth application-default login
    
  2. policy_file.yaml 파일을 만듭니다.

    OAuth 클라이언트 ID를 사용하여 애플리케이션을 지정할 수 있습니다. Google 애플리케이션을 지정하려면 콘솔의 경우 Cloud Console과 같은 애플리케이션 이름을 사용하세요. Google Cloud 콘솔 및 Google Cloud SDK Google 애플리케이션만 지원됩니다. Google Cloud

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedClientApplication:
            name: Cloud Console
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            name: Google Cloud SDK
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            clientId: CLIENT_ID_1
      activeSettings:
        accessLevels:
        - CBA_ACCESS_LEVEL
    

    다음을 바꿉니다.

    • CLIENT_ID_1: OAuth 클라이언트 ID입니다.
    • CBA_ACCESS_LEVEL: 형식의 CBA 액세스 수준 이름입니다.accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME
  3. CBA 액세스 수준 바인딩을 만듭니다.

    gcloud access-context-manager cloud-bindings create \
       --group-key='GROUP_KEY' \
       --organization='ORG_ID' \
       --binding-file=policy_file.yaml
    

    다음을 바꿉니다.

    • GROUP_KEY: 고유한 그룹 ID
    • ORG_ID: 조직 ID

    gcloud

    고유한 그룹 ID를 GROUP_KEY로 사용할 수 있습니다. 고유한 그룹 ID를 가져오려면 다음 명령어를 사용하세요.

    gcloud identity groups describe EMAIL
    

    EMAIL을 그룹의 이메일 주소로 바꿉니다. 고유한 그룹 ID는 그룹 이름에서 / 뒤에 반환되는 값입니다. 예를 들어 groups/01gf8i8311xalqg의 고유한 그룹 ID는 01gf8i8311xalqg입니다.

    REST

    고유한 그룹 ID를 GROUP_KEY로 사용할 수 있습니다. REST API를 사용하여 고유한 그룹 ID를 가져오려면 그룹 리소스의 get 메서드를 호출하여 검색할 수 있습니다. 고유한 그룹 ID는 그룹 리소스의 id 필드에 반환됩니다.

  4. (선택사항) 기존 액세스 수준 바인딩을 업데이트합니다.

    gcloud access-context-manager cloud-bindings update \
       --binding='BINDING_NAME' \
       --binding-file=policy_file.yaml
    

    BINDING_NAME을 바인딩이 생성될 때 자동으로 생성된 바인딩 이름으로 바꿉니다.

애플리케이션을 바인딩에서 제외

클라이언트 인증서를 지원하지 않는 클라이언트 애플리케이션을 차단하지 않고 CBA 액세스 수준을 적용하는 또 다른 방법은 이러한 애플리케이션을 정책에서 제외하는 것입니다.

다음 단계에서는 리소스에 대한 액세스를 결정할 때 인증서가 필요한 CBA 액세스 수준을 만들었음을 가정합니다.

  1. 다음 방법 중 하나를 사용하여 예외 액세스 수준을 만듭니다.

  2. exemption_file.yaml 파일을 만듭니다.

    scopedAccessSettings:
    - scope:
        clientScope:
          restrictedClientApplication:
            clientId: CLIENT_ID_2
      activeSettings:
        accessLevels:
        - EXEMPT_ACCESS_LEVEL
    - scope:
        clientScope:
          restrictedClientApplication:
            name: APPLICATION_NAME_2
      activeSettings:
        accessLevels:
        - EXEMPT_ACCESS_LEVEL
    

    다음을 바꿉니다.

    • CLIENT_ID_2: OAuth 클라이언트 ID
    • APPLICATION_NAME_2: 애플리케이션 이름
    • EXEMPT_ACCESS_LEVEL: 형식의 예외 액세스 수준 이름입니다accessPolicies/POLICY_ID/accessLevels/ACCESS_LEVEL_NAME.
  3. 예외 바인딩 정책을 만듭니다.

    gcloud access-context-manager cloud-bindings create \
       --group-key='GROUP_KEY' \
       --organization='ORG_ID' \
       --binding-file=exemption_file.yaml
    

    다음을 바꿉니다.

    • GROUP_KEY: 고유한 그룹 ID
    • ORG_ID: 조직 ID