2장. CertificateSigningRequest [certificates.k8s.io/v1]


설명

CertificateSigningRequest 객체는 인증서 서명 요청을 제출하고 비동기적으로 승인 및 발행하여 x509 인증서를 얻는 메커니즘을 제공합니다.

kubelets는 이 API를 사용하여 1. 클라이언트 인증서를 가져와서 kube-apiserver(kubernetes.io/kube-apiserver-client-kubelet)에 인증합니다. 2. TLS 끝점 kube-apiserver에 대한 인증서를 제공하면 안전하게 연결할 수 있습니다( "kubernetes.io/kubelet-serving" 서명자 사용).

이 API는 클라이언트 인증서를 요청하여 kube-apiserver( "kubernetes.io/kube-apiserver-client" signerName 사용) 또는 사용자 정의 비-Kubernetes 서명자에서 인증서를 가져올 수 있습니다.

유형
object
필수 항목
  • spec

2.1. 사양

속성유형설명

apiVersion

string

APIVersion은 버전이 지정된 이 오브젝트 표현의 스키마를 정의합니다. 서버는 인식된 스키마를 최신 내부 값으로 변환해야 하며, 인식되지 않는 값을 거부할 수 있습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources

kind

string

kind는 이 오브젝트가 나타내는 REST 리소스에 해당하는 문자열 값입니다. 서버는 클라이언트에서 요청을 제출한 끝점에서 이를 유추할 수 있습니다. CamelCase로 업데이트할 수 없습니다. 자세한 내용은 https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds

메타데이터

ObjectMeta

 

spec

object

CertificateSigningRequestSpec에는 인증서 요청이 포함되어 있습니다.

status

object

CertificateSigningRequestStatus에는 요청의 승인/거부/실패 상태를 나타내는 데 사용되는 조건과 발급된 인증서가 포함되어 있습니다.

2.1.1. .spec

설명
CertificateSigningRequestSpec에는 인증서 요청이 포함되어 있습니다.
유형
object
필수 항목
  • 요청
  • signerName
속성유형설명

expirationSeconds

integer

expirationSeconds는 발급된 인증서의 유효 기간입니다. 인증서 서명자는 다른 유효 기간이 있는 인증서를 발행할 수 있으므로 클라이언트는 발행된 인증서의 notBefore 및 notAfter 필드 간에 실제 기간을 확인해야 합니다.

잘 알려진 Kubernetes 서명자의 v1.22+ in-tree 구현은 요청된 기간이 Kubernetes 컨트롤러 관리자에게 --cluster-signing-duration CLI 플래그에 따라 적용되는 최대 기간보다 크지 않는 한 이 필드를 준수합니다.

인증서 서명자는 다양한 이유로 이 필드를 준수하지 않을 수 있습니다.

1. 필드를 인식하지 못하는 이전 서명자(예: v1.22) 2 이전의 in-tree 구현 구성된 최대값이 요청된 기간 3보다 짧은 서명자. 구성된 최소값이 요청된 기간보다 긴 서명자

expirationSeconds의 최소 유효 값은 600, 즉 10 분입니다.

extra

object

extra에는 CertificateSigningRequest를 생성한 사용자의 추가 속성이 포함되어 있습니다. 생성 및 변경할 수 없는 경우 API 서버에서 채웁니다.

extra{}

배열(문자열)

 

groups

배열(문자열)

그룹에는 CertificateSigningRequest를 생성한 사용자의 그룹 멤버십이 포함됩니다. 생성 및 변경할 수 없는 경우 API 서버에서 채웁니다.

요청

string

요청에는 "CERTIFICATE REQUEST" PEM 블록으로 인코딩된 x509 인증서 서명 요청이 포함됩니다. JSON 또는 YAML로 직렬화되면 데이터가 추가로 base64로 인코딩됩니다.

signerName

string

signerName은 요청된 서명자를 나타내며 정규화된 이름입니다.

CertificateSigningRequests에 대한 목록/watch 요청은 "spec.signerName=NAME" fieldSelector를 사용하여 이 필드를 필터링할 수 있습니다.

잘 알려진 Kubernetes 서명자는 1입니다. "kubernetes.io/kube-apiserver-client": kube-apiserver에 인증하는 데 사용할 수 있는 클라이언트 인증서를 발행합니다. 이 서명자에 대한 요청은 kube-controller-manager에서 자동으로 승인하지 않으며 kube-controller-manager의 "csrsigning" 컨트롤러에서 실행할 수 있습니다. 2. "Kubernetes.io/kube-apiserver-client-kubelet": kubelet이 kube-apiserver에 인증하는 데 사용하는 클라이언트 인증서를 발행합니다. 이 서명자에 대한 요청은 kube-controller-manager의 "csrapproving" 컨트롤러에서 자동으로 승인할 수 있으며 kube-controller-manager의 "csrsigning" 컨트롤러에서 발행할 수 있습니다. 3. "Kubernetes.io/kubelet-serving"은 kubelets가 kube-apiserver가 안전하게 연결할 수 있는 TLS 엔드포인트를 제공하는 데 사용하는 인증서를 제공하는 데 문제가 있습니다. 이 서명자에 대한 요청은 kube-controller-manager에 의해 자동 승인되지 않으며 kube-controller-manager의 "csrsigning" 컨트롤러에서 발행할 수 있습니다.

자세한 내용은 https://k8s.io/docs/reference/access-authn-authz/certificate-signing-requests/#kubernetes-signers에서 확인할 수 있습니다.

사용자 정의 서명자 이름도 지정할 수 있습니다. 서명자는 1을 정의합니다. 신뢰 배포: 신뢰(CA 번들)를 배포하는 방법. 2. 허용되는 제목: 허용되지 않는 주체가 요청될 때의 동작입니다. 3. 요청에서 필수, 허용 또는 금지 x509 확장( subjectAltNames이 허용되는 유형, 허용되는 값에 대한 제한 사항 포함) 및 허용되지 않은 확장이 요청될 때 동작을 포함합니다. 4. 필수, 허용 또는 금지된 키 사용/연장 키 사용. 5. expiration/certificate lifetime: 관리자가 구성할 수 있는 서명자에 의해 고정되어 있는지 여부입니다. 6. CA 인증서에 대한 요청이 허용되는지 여부입니다.

uid

string

UID에는 CertificateSigningRequest를 생성한 사용자의 uid가 포함되어 있습니다. 생성 및 변경할 수 없는 경우 API 서버에서 채웁니다.

usages

배열(문자열)

usages는 발급된 인증서에 요청된 키 사용량 세트를 지정합니다.

TLS 클라이언트 인증서에 대한 요청은 일반적으로 "digital signature", "key encipherment", "client auth"를 요청합니다.

TLS 제공 인증서에 대한 요청은 일반적으로 "키 encipherment", "digital signature", "server auth"를 요청합니다.

유효한 값은 다음과 같습니다: "signing", "digital signature", "content commitment", "key encipherment", "key agreement", "data encipherment", "cert sign", "encipher only", "encipher only", "any", "any", "server auth", "client auth", "code signing", "email protection", "s/mime", "ipsec end system", "ipsec tunnel", "ipsec user", "timestamping", "ocsp signing", "microsoft sgc", "netscape sgc"

사용자 이름

string

username에는 CertificateSigningRequest를 생성한 사용자의 이름이 포함됩니다. 생성 및 변경할 수 없는 경우 API 서버에서 채웁니다.

2.1.2. .spec.extra

설명
extra에는 CertificateSigningRequest를 생성한 사용자의 추가 속성이 포함되어 있습니다. 생성 및 변경할 수 없는 경우 API 서버에서 채웁니다.
유형
object

2.1.3. .status

설명
CertificateSigningRequestStatus에는 요청의 승인/거부/실패 상태를 나타내는 데 사용되는 조건과 발급된 인증서가 포함되어 있습니다.
유형
object
속성유형설명

certificate

string

인증서는 승인 조건이 있는 후 서명자가 발급한 인증서로 채워집니다. 이 필드는 /status 하위 리소스를 통해 설정됩니다. 채워지면 이 필드는 변경할 수 없습니다.

인증서 서명 요청이 거부되면 "Denied" 유형 조건이 추가되고 이 필드는 비어 있습니다. 서명자가 인증서를 발행할 수 없는 경우 "Failed" 유형의 조건이 추가되고 이 필드는 비어 있습니다.

검증 요구 사항: 1. 인증서에는 하나 이상의 PEM 블록이 포함되어야 합니다. 2. 모든 PEM 블록에는 "CERTIFICATE" 레이블이 있어야 하며, 헤더를 포함하지 않으며 인코딩된 데이터는 RFC5280의 4 섹션에 설명된 대로 BER로 인코딩된 ASN.1 인증서 구조여야 합니다. 3. 비PEM 콘텐츠는 "CERTIFICATE" PEM 블록 이전 또는 이후에 나타날 수 있으며 RFC7468의 5.2 섹션에 설명된 대로 설명적 텍스트를 허용할 수 있습니다.

PEM 블록이 두 개 이상 있고 요청된 spec.signerName의 정의가 달리 표시되지 않는 경우 첫 번째 블록이 발급된 인증서이고 후속 블록은 중간 인증서로 처리되어야 하며 TLS 핸드셰이크에 표시되어야 합니다.

인증서는 PEM 형식으로 인코딩됩니다.

JSON 또는 YAML로 직렬화될 때 데이터는 추가로 base64로 인코딩되므로 다음으로 구성됩니다.

base64( ----BEGIN CERTIFICATE----…​ ----END CERTIFICATE----- )

conditions

array

요청에 적용되는 조건입니다. 알려진 조건은 "승인", "승인" 및 "실패"입니다.

conditions[]

object

CertificateSigningRequestCondition은 CertificateSigningRequest 오브젝트의 조건을 설명합니다.

2.1.4. .status.conditions

설명
요청에 적용되는 조건입니다. 알려진 조건은 "승인", "승인" 및 "실패"입니다.
유형
array

2.1.5. .status.conditions[]

설명
CertificateSigningRequestCondition은 CertificateSigningRequest 오브젝트의 조건을 설명합니다.
유형
object
필수 항목
  • type
  • status
속성유형설명

lastTransitionTime

시간

lastTransitionTime은 조건이 한 상태에서 다른 상태로 마지막으로 전환된 시간입니다. 설정되지 않은 경우 새 조건 유형이 추가되거나 기존 조건의 상태가 변경되면 서버는 기본적으로 현재 시간으로 설정됩니다.

lastUpdateTime

시간

lastUpdateTime은 이 조건에 대한 마지막 업데이트 시간입니다.

message

string

메시지에는 요청 상태에 대한 세부 정보가 포함된 사람이 읽을 수 있는 메시지가 포함되어 있습니다.

reason

string

이유는 요청 상태에 대한 간략한 이유를 나타냅니다.

status

string

조건의 상태, True, False, 알 수 없음. 승인됨, 거부됨 및 실패 조건은 "False" 또는 "알 수 없음"이 아닐 수 있습니다.

type

string

조건의 유형입니다. 알려진 조건은 "승인", "승인" 및 "실패"입니다.

"승인됨" 조건은 /approval 하위 리소스를 통해 추가되어 요청이 승인되었으며 서명자가 발행해야 함을 나타냅니다.

"Denied" 조건은 /approval 하위 리소스를 통해 추가되어 요청이 거부되었으며 서명자가 발행해서는 안 함을 나타냅니다.

/status 하위 리소스를 통해 "실패" 조건이 추가되어 서명자가 인증서를 발행하지 못했습니다.

승인 및 거부 조건은 함께 사용할 수 없습니다. 승인됨, 거부됨, 실패한 조건이 추가되면 제거할 수 없습니다.

지정된 유형의 하나의 조건만 허용됩니다.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.