인증 관리자 통합을 통한 인증서 생성
ServiceNow 외부 발급자(sn-external-issuer)를 사용하여 Kubernetes 인증 관리자를 통해 인증서를 요청하고 인증서 및 관련 정보를 Kubernetes 클러스터 내에 비밀로 안전하게 저장합니다. Kubernetes에서 암호는 암호, API 키 및 인증서와 같은 중요한 정보를 저장하고 관리할 수 있는 개체입니다.
배포 요구 사항
- Kubernetes 환경에 인증 관리자를 배포합니다. 인스턴스 URL, 인증서 소유자 그룹, 인증서 소유자, 환경 및 갱신 추적으로 manager.yaml을 업데이트합니다.
- Kubernetes 환경에 ServiceNow 외부 발급자(sn-external-issuer)를 배포합니다. 인스턴스 사용자 이름 및 암호로 Kubernetes 비밀 clusterissuer-servicenow-credentials을 생성하여 사용자가 인증서를 요청하는 데 필요한 역할을 갖도록 합니다.
ServiceNow 외부 발급자(sn-external-issuer)
- 외부 발급자는 비핵심 API 및 서비스를 통해 인증서를 발급하도록 인증 관리자 기능을 확장합니다.
- ServiceNow 외부 발급자는 ServiceNow 고유의 외부 발급자 구현입니다.
- 새 인증서 작업이 생성되면 해당 인증서 요청 UID 및 인증서 작업 시스템 ID가 로컬 JSON 캐시에 저장되고 인증서 요청 UID가 인스턴스의 작업 맵 테이블에 저장됩니다.
- ServiceNow 외부 발급자는 인스턴스를 폴링하여 인증 작업의 상태를 모니터링합니다.
- 인증서 작업이 작업 진행 중 상태인 경우 해당 인증서 요청 UID 및 인증서 작업 시스템 ID가 인스턴스의 외부 발행자 UID 맵 테이블과 로컬 JSON 캐시에 추가됩니다. 이 시간 동안 인증 관리자는 자동으로 인증서 요청을 시도합니다.
- 인증서 요청을 받으면 인증 관리자는 로컬 JSON 캐시에서 일치하는 작업을 확인합니다. 발견되면 동일한 작업을 폴링하고, 그렇지 않으면 외부 발급자 UID 맵 테이블에서 인스턴스에 레코드를 쿼리하고 로컬 JSON 캐시를 채웁니다.
- 작업이 완료로 표시되고 인증서가 생성되면 ServiceNow 외부 발급자는 인스턴스에 다른 요청을 보내고 인증서 첨부 파일을 다운로드한 다음 인증서 자원과 해당 비밀을 Kubernetes에서 업데이트합니다.
Kubernetes에 ServiceNow 외부 발급자 배포
Kubernetes에 ServiceNow 외부 발급자를 배포하려면 다음 단계가 필요합니다.
- ServiceNow 인스턴스 다운로드 페이지에서 Helm 차트 또는 YAML zip 패키지를 가져옵니다.
manager.yaml또는values.yaml파일을 특정 사용 사례의 필요에 따라 사용자 지정합니다. 이러한 파일은 인스턴스 URL 및 인증서 소유자 그룹과 같은 필수 정보를 포함할 수 있습니다.- 인스턴스 사용자 이름 및 암호로 Kubernetes 비밀
clusterissuer-servicenow-credentials를 생성합니다.예제 명령:- 인스턴스 사용자 이름 및 암호로 Kubernetes 비밀
clusterissuer-servicenow-credentials를 생성합니다. 예제 명령:kubectl create secret generic clusterissuer-servicenow-credentials --from-literal=user=<user_name> --from-literal=password=<password> -n system - 사용자에게 인증서를 요청하는 데 필요한 역할이 있는지 확인합니다.
- 인스턴스 사용자 이름 및 암호로 Kubernetes 비밀
- 배포를 위해 다음 명령을 실행합니다.
kubectl create ns system kubectl apply -f crd kubectl apply -f rbac kubectl apply -f issuers kubectl apply -f manager/manager.yaml - (선택 사항) 특정 요구사항에 맞게 파일의 추가 구성을 사용자 지정합니다.
- 배포가 성공하고 ServiceNow 외부 발급자가 실행 중인지 확인합니다.
새 인증서 플로우 요청
배포 후 certificate_clusterissuer.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: ClusterIssuer
kubectl apply -f certificate_clusterissuer.yaml을 사용하여 인증서 자원을 적용합니다.