인증 관리자 통합을 통한 인증서 생성
ServiceNow 외부 발급자(sn-external-issuer)로 Kubernetes 인증 관리자를 통해 인증서를 요청하고 비밀로 저장합니다.
필요 조건
인증 관리자는 Kubernetes 환경에 배포되어야 합니다. 인스턴스 URL, 인증서 소유자 그룹, 인증서 소유자, 환경 및 갱신 추적으로 manager.yaml을 업데이트합니다.
ServiceNow 외부 발급자(sn-external-issuer)를 Kubernetes 환경에 배포해야 합니다. 인스턴스 사용자 이름 및 암호로 Kubernetes 비밀 clusterissuer-servicenow-credentials를 생성합니다. 사용자에게 인증서를 요청하는 적절한 역할이 있어야 합니다.
ServiceNow 외부 발급자(sn-external-issuer)
외부 발급자는 인증 관리자 코어에 빌드되지 않은 API와 서비스를 사용하여 인증서를 발급하도록 인증 관리자를 확장합니다. ServiceNow 외부 발급자에게는 외부 발급자의 ServiceNow 구현이 제공됩니다.
새 인증 작업이 생성되면 인증 요청 UID 및 인증 작업 시스템 ID가 로컬 json 캐시에 추가되고 true로 활성 상태인 인스턴스의 "작업 맵에 대한 인증 요청 UID" 테이블에 추가됩니다. ServiceNow 외부 발급자에서 인스턴스를 폴링하고 작업 상태를 확인합니다.
그런 다음, ServiceNow 외부 발급자에서 인증 작업 상태를 확인합니다. 작업이 진행 중 상태이면 인증 요청 UID 및 인증 작업 시스템 ID가 인스턴스의 외부 발급자 UID 맵 테이블과 로컬 Json 캐시에 추가됩니다. 인증서 요청이 보류 중인 동안 인증 관리자는 자동으로 동일한 인증서를 요청하려고 시도합니다.
인증서 요청을 받으면 인증 관리자는 로컬 Json 캐시에 해당 UID에 대해 생성된 작업이 있는지 확인합니다. 일치하는 작업이 있는 경우 동일한 작업을 다시 폴링합니다. 일치하는 작업이 없는 경우 인스턴스를 쿼리하여 외부 발급자 UID 맵 테이블에서 기록을 가져와 로컬 Json 캐시를 채웁니다.
작업이 완료로 표시되고 인증서가 생성되면 ServiceNow 외부 발급자가 다른 요청을 인스턴스로 보내고 인증서 첨부 파일을 다운로드합니다. 인증 관리자는 Kubernetes에서 인증서 자원과 해당 비밀을 업데이트합니다.
Kubernetes에 ServiceNow 외부 발급자 배포
인스턴스 다운로드 페이지에서 Helm 차트 또는 YAML zip 패키지를 다운로드할 수 있습니다. 다운로드가 완료되면 manager.yaml 또는 values.yaml 파일을 특정 사용 사례에 맞게 사용자 지정할 수 있습니다. 이러한 파일은 인스턴스 URL 및 인증서 소유자 그룹과 같은 필수 정보를 포함하도록 수정할 수 있습니다.
또한 다음 명령을 사용하여 비밀 clusterissuer-servicenow-credentials를 생성해야 합니다.
“kubectl create secret generic clusterissuer-servicenow-credentials --from-literal=user=<user_name> --from-literal=password=<password> -n system”.
이 명령은 Helm 차트에 통합할 수도 있습니다. 관련 커스터마이제이션이 완료되고 비밀 자격 증명이 생성되면 다음과 같이 kubectl 적용 또는 helm 설치 명령을 사용하여 ServiceNow 외부 발급자의 배포를 진행할 수 있습니다.
kubectl create ns system
kubectl apply -f crd
kubectl apply -f rbac
kubectl apply -f issuers
kubectl apply -f manager/manager.yaml
새 인증 플로우 요청
배포가 완료되면 다음 정보를 사용하여 인증서 자원을 제출할 수 있습니다.
- issuerRef : clusterissuer-servicenow
- issuer : issuer-servicenow
- kind : ClusterIssuer
- issuerRef : servicenow-issuer.servicenow.com
샘플 인증서 자원:
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: certificate-by-clusterissuer
spec:
commonName: certificate-by-clusterissuer.servicenow.com
secretName: certificate-by-clusterissuer
dnsNames:
- servicenow.com
- foo.servicenow.com
issuerRef:
name: clusterissuer-servicenow
group: servicenow-issuer.servicenow.com
kind: ClusterIssuerkubectl apply -f certificate_clusterissuer.yaml