키 만들기 및 삭제

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

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

시작하기 전에

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

IAM 역할 요청

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

  • KMS 생성자 (kms-creator): 프로젝트 내에서 AEADKeySigningKey 리소스를 보고 만듭니다.
  • 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. kubeconfig 파일 을 gdcloud CLI를 사용하여 관리 API 서버에 가져옵니다.

키 만들기

다양한 암호화 목적으로 키를 만들 수 있습니다.

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)

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

서명 키 생성 확인

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

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

다음을 바꿉니다.

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

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

키 삭제

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

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

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

    다음을 바꿉니다.

    • KUBECONFIG_PATH: 관리 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
    

    키가 삭제되면 명령어는 키 객체를 반환하지 않습니다.