본문 바로가기

카테고리 없음

Certificate Signing Requests(CSR)

728x90

 

Certificate Signing Requests 의 내용을 일부 번역한 문서 입니다.

1.9버젼 기준

인증(Certificates) API는 쿠버네티스 API를 이용하는 클라이언트에게 프로그램 방식의 인터페이스를 이용해 인증기관에서 제공하는 X.509 인증서를 제공 합니다.

CertificateSigningRequest(CSR) 오브젝트는 지정된 사이너(signer:사인해주는 사람 또는 코드)가 인증서 요청이 왔을 때 인증을 해준 혹은 해주지 않은 인증서를 요정하는데 사용합니다.

 

요청에 권한을 부여하는 과정

CSR만들기

CSR 오브젝트(resource type)는 클라이언트에게 승인 요청(signing request)을 통해 X.509 인증서 발급을 요청할 수 있게 해줍니다. CSR 오브젝트는 PEM암호화 방식으로 인코딩된 PKCS#10 승인 요청서를 spec.request에 가지고 있습니다. CSR 오브젝트를 만들 때 사이너(signer)는 spec.signerName필드에 지정 합니다. spec.signerName는 꼭 지정 해주어야 합니다. 쿠버네티스 1.22버젼 이후로 사용 기한을 설정할 수 있는 spec.expirationSeconds를 사용할 수 있습니다. spec.expirationSeconds의 최소값은 600으로 10분입니다.

Approve(승인)하기

CertificateSigningRequest를 만들 후 approve(승인)를 해야만 사용할 수 있습니다. 사이너(singer)의 정책에 따라 컨트롤러에 의해 CSR은 자동으로 승인 될 수 있습니다. 그렇지 않으면 CSR은 API를 이용하거나 kubectl certificate approve 명령어를 이용해 수동으로 승인 해주어야 합니다. 또한 CSR은 거절(denied)될 수 있습니다.

CSR의 권한 요청이 승인된 후 다음 단계는 사이닝(signing)입니다. 사이닝(Signing)관련 컨트롤러는 승인 조건이 맞는지 확인 한 후 권한을 부여합니다. 권한을 부여한 후 사이닝 컨트롤러는 CSR오브젝트를 업데이트 합니다. 업데이트 하는 내용은 새로운 인증 정보를 CSR의 status.certificate 필드 입니다. status.certificate 필드는 비어있거나 PEM format으로 인코딩된 X.509 인증 정보가 들어있습니다. CertificateSigningRequest의 status.certificate 필드는 사이너가 업데이트하기 전까지는 비어있습니다.

status.certificate 업데이트

status.certificate에 값이 들어가 활성화 되면 권한 요청이 완료 되고 클라이언트는 사인된 인증 PEM데이터를 CSR에서 받아올 수 있습니다. 사이너(Signer)는 요청 내용이 적절하지 않다면 승인을 해주는 대신 거절 할 수 있습니다.

서버에 남아있는 사용하지 않는 CSR 오브젝트를 정리 하려면 가비지컬렉션 컨트롤러를 정기적으로 실행해서 정리할 수 있습니다. 가비지 컬렉션은 아래 조건의 CSR들을 정리 해줍니다.

  • 승인한 요청 : 1시간 후에 지우기
  • 거절한 요청 : 1시간 후에 지우기
  • 실패한 요청 : 1시간 후에 지우기
  • 연기한 요청 : 24시간 후에 지우기
  • 모든 요청 : 만료된 권한 지우기
728x90
블로그 주인장입니다. 원하시는 정보는 얻으셨나요? 이 포스트에서 추가로 필요한 정보가 있으시면 여기에 남겨주세요.