엔터프라이즈 인증서 조건 구성

BeyondCorp Enterprise의 핵심 원칙은 'Google에서 사용자와 사용자 기기에 대해 알고 있는 정보를 기반으로 서비스에 대한 액세스 권한 부여'입니다. 단일 사용자 또는 단일 기기에 부여된 액세스 수준은 여러 데이터 소스 조사를 통해 동적으로 추론됩니다. BeyondCorp Enterprise는 결정 프로세스의 일부로 이러한 수준의 신뢰를 사용합니다.

Access Context Manager는 BeyondCorp Enterprise의 제로 트러스트 정책 엔진입니다. Access Context Manager를 사용하면 애플리케이션 및 Google Cloud 리소스에 대해 세분화된 속성 기반 액세스 제어를 정의할 수 있습니다.

액세스 수준을 사용하면 요청에 대한 컨텍스트 정보를 기반으로 리소스에 대한 액세스를 허용할 수 있습니다. 액세스 수준을 사용하면 트러스트 계층을 구성할 수 있습니다. 예를 들어 권한이 높은 소규모 개인 그룹의 요청을 허용하는 High_Level 액세스 수준을 만들 수 있습니다. 또한 요청을 허용할 IP 범위와 같이 신뢰할 수 있는 보다 일반적인 그룹을 식별할 수도 있습니다. 이 경우 Medium_Level이라는 액세스 수준을 만들어 이러한 요청을 허용할 수 있습니다.

제로 트러스트 액세스를 위한 주요 요구사항 중 하나는 기기가 기업에서 관리되거나 소유될 때만 액세스를 허용하는 것입니다. 기기가 회사 소유인지 여부를 확인하는 방법에는 여러 가지가 있으며 한 가지 방법은 회사에서 발급한 유효한 인증서가 기기에 있는지 확인하는 것입니다. 기기에 엔터프라이즈 인증서가 있으면 기기가 회사 소유임을 나타낼 수 있습니다.

컨텍스트 인식 액세스를 위한 엔터프라이즈 인증서는 전체 BeyondCorp Enterprise 인증서 기반 액세스 솔루션의 기능입니다. 이 기능은 기기 인증서를 대체 컨텍스트 인식 신호로 활용하여 기기가 기업 소유 애셋인지 확인합니다. 이 기능은 Chrome 브라우저 110 이상에서 지원됩니다.

기기에는 인증서가 두 개 이상 있을 수 있으므로 매크로 .exist(e,p)를 통해 커스텀 액세스 수준에서 엔터프라이즈 인증서에 액세스할 수 있습니다.

device.certificates.exists(cert, predicate)

이 예시에서 cert는 기기 인증서에 결합되는 predicator에 사용할 간단한 식별자입니다. exist() 매크로는 요소별 조건자 결과를 'or' (||) 연산자와 결합합니다. 즉, 하나 이상의 인증서가 predicate 표현식을 충족하는 경우 매크로가 true를 반환합니다.

인증서에는 다음과 같이 함께 확인할 수 있는 속성이 있습니다. 문자열 비교에서는 대소문자가 구분됩니다.

속성 설명 조건자 표현식 예(여기서 cert는 매크로의 식별자)
is_valid 인증서가 유효하고 만료되지 않았다면 true(부울)cert.is_valid
cert_fingerprint 인증서의 지문(base64 패딩되지 않은 SHA256)

디지털 지문은 DER로 인코딩된 인증서의 패딩되지 않은 base64로 인코딩된 SHA256 다이제스트(바이너리 형식)입니다. OpenSSL에서 다음 프로시져를 사용하여 PEM 형식의 인증서에서 문자열을 생성할 수 있습니다.

$ openssl x509 -in cert.pem -out cert.der -outform DER
$ openssl dgst -sha256 -binary cert.der > digest.sha
$ openssl base64 -in digest.sha

cert.cert_fingerprint == origin.clientCertFingerprint()
root_ca_fingerprint 인증서에 서명하는 데 사용된 루트 CA 인증서의 디지털 지문(base64가 패딩되지 않은 SHA256)

디지털 지문은 DER로 인코딩된 인증서의 패딩되지 않은 base64로 인코딩된 SHA256 다이제스트(바이너리 형식)입니다. OpenSSL에서 다음 프로시져를 사용하여 PEM 형식의 인증서에서 문자열을 생성할 수 있습니다.

$ openssl x509 -in cert.pem -out cert.der -outform DER
$ openssl dgst -sha256 -binary cert.der > digest.sha
$ openssl base64 -in digest.sha

cert.root_ca_fingerprint == "the_fingerprint"
issuer 발급기관 이름(완전히 확장된 이름)

발급자 이름을 찾으려면 다음 방법을 사용합니다.

인증서에서 다음 명령어를 실행합니다.

$ openssl x509 -in ca_1.crt -issuer issuer= /C=IN/ST=UP/L=NCR/O=BCEDemo/OU=BCEDemo_1/CN=inter_1/emailAddress=test_inter1@beyondcorp.in

액세스 수준에서 사용되는 발급기관 문자열은 출력의 역순이며 '/'를 쉼표로 대체합니다. 예:

EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN

cert.issuer == "EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN"
subject 인증서의 주체 이름(완전히 확장된 이름) cert.subject == "CA_SUB"
serial_number 인증서의 일련번호(문자열) cert.serial_number = "123456789"
template_id 인증서에 대한 X.509 확장 인증서 템플릿의 템플릿 ID(문자열) cert.template_id = "1.3.6.1.4.1.311.21.8.15608621.11768144.5720724.16068415.6889630.81.2472537.7784047"

다음 표에는 설정할 수 있는 정책의 예시가 나와 있습니다.

정책 예시 표현식
기기에 회사 루트 인증서로 서명된 유효한 인증서가 있습니다. device.certificates.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "ROOT_CA_FINGERPRINT")
기기에 CA_ABC. 발급자가 발급한 유효한 인증서가 있습니다. device.certificates.exists(cert, cert.is_valid && cert.issuer == "EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN")

엔터프라이즈 인증서 구성

엔터프라이즈 인증서를 구성하기 전에 커스텀 액세스 수준을 구성했는지 확인하세요. 자세한 내용은 커스텀 액세스 수준 만들기를 참고하세요.

사용자는 Access Context Manager 커스텀 액세스 수준 정의를 사용하여 적합한 정책을 설정할 수 있습니다. 커스텀 액세스 수준은 Common Expression Language(CEL)의 하위 집합으로 작성된 부울 표현식을 사용하여 요청하는 클라이언트의 속성을 테스트합니다.

관리 콘솔에서 트러스트 앵커 업로드

BeyondCorp Enterprise에서 기기 엔터프라이즈 인증서를 수집하고 검증하려면 기기 인증서를 발급하는 데 사용되는 신뢰 앵커를 업로드해야 합니다. 여기에서 신뢰 앵커는 자체 서명 루트 CA(인증 기관) 인증서 및 관련 중간 및 종속 인증서를 의미합니다. 신뢰 앵커를 업로드하려면 다음 단계를 완료하세요.

  1. 관리 콘솔로 이동하고 기기 > 네트워크 > 인증서로 이동합니다.
  2. 적절한 조직 단위를 선택합니다.
  3. 인증서 추가를 선택합니다.
  4. 인증서 이름을 입력합니다.
  5. 인증서를 업로드합니다.
  6. 엔드포인트 확인 체크박스를 사용 설정합니다.
  7. 추가를 클릭합니다.
  8. 사용자가 신뢰 앵커가 업로드되는 조직 단위에 속해 있는지 확인합니다.

AutoSelectCertificateForUrls 정책 구성

엔드포인트 확인으로 기기 인증서를 검색하고 Chrome을 통해 수집하려면 다음 단계에 따라 AutoSelectCertificateForURLs Chrome 정책을 구성해야 합니다.

  1. Chrome 브라우저가 Chrome 브라우저 클라우드 관리로 관리되는지 확인합니다.

  2. 관리 콘솔에서 AutoSelectCertificateForUrls 정책을 추가합니다.

    1. 관리 콘솔로 이동하여 기기 > Chrome > 설정 > 사용자 및 브라우저 설정 > 클라이언트 인증서로 이동합니다.
    2. 적절한 조직 단위를 선택합니다.
    3. 다음 예시와 같이 정책(AutoSelectCertificateForUrls)을 추가합니다.

      {"pattern":"https://[*.]clients6.google.com","filter":{"ISSUER":{"CN":"CERTIFICATE_ISSUER_NAME"}}}
      

      CERTIFICATE_ISSUER_NAME을 루트 CA의 일반 이름으로 바꿉니다. pattern 값은 수정하지 마세요.

정책 구성을 확인하려면 다음 단계를 완료하세요.

  1. 브라우저에서 chrome://policy로 이동합니다.
  2. AutoSelectCertificateForUrls의 구성된 값을 확인합니다.
  3. 정책 적용 대상 값이 머신으로 설정되어 있는지 확인합니다. Chrome 운영체제에서는 이 값이 현재 사용자*에게 적용됩니다.
  4. 정책의 상태충돌이 없는지 확인합니다.

구성 문제 해결

기기 세부정보 페이지의 인증서 속성을 검토하여 인증서 속성이 올바르게 나열되어 있는지 확인합니다.

엔드포인트 확인 로그를 사용하여 문제를 해결할 수 있습니다. 엔드포인트 확인 로그를 다운로드하려면 다음 단계를 완료합니다.

  1. 엔드포인트 확인 확장 프로그램을 마우스 오른쪽 버튼으로 클릭한 후 옵션으로 이동합니다.
  2. 로그 수준 > 모두 > 로그 다운로드를 선택합니다.
  3. Cloud Customer Care에서 지원 케이스를 열고 추가 디버깅을 위해 로그를 공유합니다.