aws / aws/containers-roadmap

[EKS] [request]: Permit "client auth" key for EKS CertificateSigningRequest

Open
#1,856 2 comments 56 reactions 0 assignees View on GitHub
EKS Proposed
Dominant language
Shell
Stars
5.4k
Forks
334
PR merge metrics
No merged PRs in 30d

Description

### Community Note

* Please vote on this issue by adding a 👍 [reaction](https://blog.github.com/2016-03-10-add-reactions-to-pull-requests-issues-and-comments/) to the original issue to help the community and maintainers prioritize this request
* Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
* If you are interested in working on this issue or have submitted a pull request, please leave a comment

**Tell us about your request**
What do you want us to build?

- When a CertificateSigningRequest is created on Amazon EKS Cluster, EKS Permits key usages: ["key encipherment", "digital signature", "server auth"]
- https://docs.aws.amazon.com/eks/latest/userguide/cert-signing.html

```
Permitted key usages: Must not include usages beyond ["key encipherment", "digital signature", "server auth"]
```

**Which service(s) is this request for?**
This could be EKS

**Tell us about the problem you're trying to solve. What are you trying to do, and why is it hard?**
What outcome are you trying to achieve, ultimately, and why is it hard/impossible to do right now? What is the impact of not having this problem solved? The more details you can provide, the better we'll be able to understand and solve the problem.

**Are you currently working around this issue?**
How are you currently solving this problem?
n/a

**Additional context**
Anything else we should know?

- Create a CSR request using below steps and validate CSR is approved but no certificate issued.

```
openssl genrsa -out myserver.key 2048
openssl req -new -key myserver.key -out myserver.csr -subj "/CN=myserver.default.svc"
cat myserver.csr | base64 -w 0 | tr -d "\n"

#Create file csr.yml and replace "base64-value" placeholder below with base64 value from previous command
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: myserver
spec:
request: base64-value
signerName: beta.eks.amazonaws.com/app-serving
usages:
- client auth

kubectl apply -f mycsr.yaml
kubectl certificate approve myserver

kubectl get csr myserver

kubectl get csr myserver -o jsonpath='{.status.certificate}'| base64 -d > myserver.crt
```

- Validate `myserver.crt` is empty file with no certificate
- `signerName` can be `beta.eks.amazonaws.com/app-serving` or `kubernetes.io/kube-apiserver-client` and still no certificate

**Attachments**
If you think you might have additional information that you'd like to include via an attachment, please do - we'll take a look. (Remember to remove any personally-identifiable information.)

Contributor guide

Open the contributing guide

Research direction

Reproduce the request using the listed openssl commands and the mycsr.yaml CertificateSigningRequest, then inspect the resulting CSR and certificate status with kubectl. The change is complete when a CSR using the client auth usage is approved and myserver.crt contains the issued certificate for the documented signer names.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, kubernetes, shell
Domain
authentication, cloud, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.