키 만들기 및 삭제

키 관리 시스템 (KMS)은 암호화, 복호화, 서명, 확인과 같은 암호화 작업을 위해 다양한 유형의 키를 지원합니다. 사용 가능한 키 유형 및 알고리즘에 대한 자세한 내용은 지원되는 키를 참조하세요.

이 페이지는 Google Distributed Cloud (GDC) 에어 갭 내에서 키 관리 작업을 수행할 때 DevOps팀과 같은 애플리케이션 운영자 그룹 내의 사용자를 대상으로 합니다. 자세한 내용은 GDC 에어 갭 문서 대상을 참조하세요.

시작하기 전에

키를 만들고 관리하려면 필요한 권한을 요청하고 환경을 준비합니다.

IAM 역할 요청

IAM 조직 관리자에게 문의하여 프로젝트 네임스페이스에서 다음 역할을 부여해 달라고 요청하세요.

  • KMS 생성자 (kms-creator): 프로젝트 내에서 AEADKey 및 SigningKey 리소스를 보고 만듭니다.
  • KMS 관리자 (kms-admin): 프로젝트 내에서 키를 보고, 만들고, 삭제합니다.

개발 환경 준비

  1. 아직 수행하지 않았으면 gdcloud CLI를 설치하고 초기화합니다.

  2. gdcloud CLI를 사용하여 GDC에 인증합니다. 이 프로세스에는 조직 콘솔의 인증 기관 (CA) 인증서가 필요합니다.

    1. CA 인증서를 다운로드합니다.

      echo -n | openssl s_client -showcerts -connect CONSOLE_URL:443 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > CA_CERT_PATH
      

      다음을 바꿉니다.

      • CONSOLE_URL: 조직의 콘솔 URL (예: console.org-1.zone1.google.gdch.test)
      • CA_CERT_PATH: CA 인증서 파일을 저장할 전체 경로 (예: /tmp/my-org-ca.crt)
    2. 다운로드한 CA 인증서를 사용하여 로그인합니다.

      gdcloud auth login --login-config-cert=CA_CERT_PATH
      
  3. gdcloud CLI를 사용하여 Management API 서버의 kubeconfig 파일을 가져옵니다.

키 만들기

다양한 암호화 용도로 키를 만들 수 있습니다.

AEAD 키 만들기

관련 데이터로 인증된 암호화 (AEAD)를 수행하려면 프로젝트 네임스페이스에 AEADKey 리소스를 만듭니다.

kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: AEADKey
metadata:
  name: KEY_NAME
  namespace: PROJECT
spec:
  algorithm: AES_256_GCM
EOF

다음을 바꿉니다.

  • KUBECONFIG_PATH: 관리 API 서버의 kubeconfig 파일 경로
  • KEY_NAME: 만들려는 AEAD 키의 이름(예: key-1)
  • PROJECT: 프로젝트 이름(예: kms-test1)

서명 키 만들기

데이터에 서명하고 확인하려면 프로젝트 네임스페이스에 SigningKey 리소스를 만듭니다.

kubectl --kubeconfig KUBECONFIG_PATH \
apply -f - << EOF
apiVersion: "kms.gdc.goog/v1"
kind: SigningKey
metadata:
  name: KEY_NAME
  namespace: PROJECT
spec:
  algorithm: EC_SIGN_P384_SHA384
EOF

다음을 바꿉니다.

  • KUBECONFIG_PATH: 관리 API 서버의 kubeconfig 파일 경로
  • KEY_NAME: 만들려는 서명 키의 이름(예: key-1)
  • PROJECT: 프로젝트 이름(예: kms-test1)

키 생성 확인

키를 만든 후 작업이 성공했고 키 리소스가 준비되었는지 확인합니다.

AEAD 키 생성 확인

AEAD 키의 상태를 확인합니다.

kubectl --kubeconfig KUBECONFIG_PATH \
  get aeadkey KEY_NAME \
  --namespace=PROJECT -o yaml

다음을 바꿉니다.

  • KUBECONFIG_PATH: 관리 API 서버의 kubeconfig 파일 경로
  • KEY_NAME: 확인할 AEAD 키의 이름(예: key-1)
  • PROJECT: 프로젝트 이름(예: kms-test1)

키 생성이 성공하면 출력에서 상태가 True인 Ready 조건을 확인합니다.

서명 키 생성 확인

서명 키의 상태를 확인합니다.

kubectl --kubeconfig KUBECONFIG_PATH \
  get signingkey KEY_NAME \
  --namespace=PROJECT -o yaml

다음을 바꿉니다.

  • KUBECONFIG_PATH: 관리 API 서버의 kubeconfig 파일 경로
  • KEY_NAME: 확인할 서명 키의 이름(예: key-1)
  • PROJECT: 프로젝트 이름(예: kms-test1)

키 생성이 성공하면 출력에서 상태가 True인 Ready 조건을 확인합니다.

키 삭제

키 리소스를 삭제하려면 키 유형과 이름을 지정합니다.

  1. 프로젝트 네임스페이스에서 키를 삭제합니다.

    kubectl --kubeconfig KUBECONFIG_PATH \
      delete KEY_PRIMITIVE KEY_NAME \
      --namespace=PROJECT
    

    다음을 바꿉니다.

    • KUBECONFIG_PATH: Management API 서버의 kubeconfig 파일 경로
    • KEY_PRIMITIVE: 삭제하려는 키 리소스의 유형입니다(예: AEAD 키의 경우 aeadkey, 서명 키의 경우 signingkey).
    • KEY_NAME: 삭제하려는 키의 이름입니다(예: key-1).
    • PROJECT: 프로젝트 이름(예: kms-test1)
  2. 키를 검색하여 키 삭제를 확인합니다.

    kubectl --kubeconfig KUBECONFIG_PATH \
      get KEY_PRIMITIVE  KEY_NAME \
      --namespace=PROJECT
    

    키가 성공적으로 삭제되면 명령어가 키 객체를 반환하지 않습니다.