GPG키 생성
IBM Cloud DevSecOps 지속적 통합 툴체인에 의해 빌드되고 인벤토리에 기록된 아티팩트는 프로덕션에 배포하기 전에 서명을 받아야 합니다. 지속적 통합 파이프라인은 아티팩트 서명 기능을 제공하는 기본 도구로 Skopeo 을 기본 도구로 사용하여 아티팩트 서명 기능을 제공합니다.
자동 또는 수동으로 DevSecOps 지속적 통합 파이프라인에서 사용하는 GPG 키를 생성하고 저장합니다.
GPG 키 자동 생성
이 방법을 사용하여 템플리트는 GPG키를 생성합니다. 다음 단계를 완료하여 키 생성을 위한 이름 및 이메일 을 입력하십시오.
-
아티팩트 서명 으로 이동하여 새로 작성을 클릭하십시오.
아티팩트 서명 -
창에서 이름 및 이메일 필드는 도구 체인 이름 및 이메일 ID로 미리 채워집니다. GPG키 요구사항을 반영하도록 이름 및 이메일 ID를 변경하십시오. 상자를 선택하여 비밀 정보 제공자에 키를 저장할 수도 있습니다.
이름 및 이메일 변경 -
키가 생성된 후 참조를 위해 복사할 수 있습니다.
그림 3아티팩트 서명 인증서
복사된 키는 base64 형식입니다. 키를 키 링으로 가져오기 전에 키를 해독하세요. echo <encoded_gpg_key> | base64 --decode
수동으로 GPG 키 생성
GPG 명령행 도구 다운로드 및 설치
운영 체제에 맞는 GPG 명령줄 도구를 다운로드하여 설치합니다. GnuPG 바이너리 릴리스 섹션으로 이동하여 운영 체제용 도구를 다운로드하세요.
Mac OS X
- Mac GPG를 다운로드하여 설치하십시오.
- 설치된 GPG의 버전을 확인하십시오. 명령행에서 다음 명령을 실행하십시오.
$ gpg --version
gpg (GnuPG) 2.3.1
libgcrypt 1.9.3
Copyright (C) 2021 Free Software Foundation, Inc.
- 2.3.1 이전 버전의 GPG의 경우 --passphrase='' 옵션을 사용하지 못할 수 있습니다. 이 경우 프롬프트가 표시되면 Enter 를 눌러 다음 대화 상자에서 비밀번호를 생략할 수 있습니다.
Windows™
- 다운로드 및 설치 GitBash (
base64인코딩에 필요). - 설치된 GPG의 버전을 확인하십시오. Git bash 명령 프롬프트에서 다음 명령을 실행하십시오.
$ gpg --version
gpg (GnuPG) 2.2.27
libgcrypt 1.8.7
Copyright (C) 2021 g10 Code GmbH
GPG 키 생성
generate-key 명령이 비밀번호 문구를 요청하는 대화 상자를 여는 경우 비밀번호 문구 및 필드를 비워 두십시오. 이는 이미지 서명의 (스코페오) 유틸리티의 제한 사항으로, 파이프라인이 암호로 보호되는 개인 키를 허용할 수 없는 경우입니다. 만드는 동안 암호를 제공하면 파이프라인이 인증서를 디코딩하지 못하고 이미지 서명 단계에서 파이프라인이 실패합니다. 이는 GIT 태그 서명에도 적용된다는 점에 유의하세요.
Mac OS X 그리고 Linux™
쉘 프롬프트에서 다음 명령을 실행하십시오.
gpg --pinentry-mode loopback --passphrase='' --generate-key
- 이름 및 이메일 주소를 입력하십시오.
- 키 생성을 시작하려면 O를 입력합니다.
- 키가 생성되면 옵션 O를 선택합니다.
Windows™
GPG 버전 > 1.4
Git bash 명령 프롬프트에서 다음 명령을 실행하십시오.
gpg --pinentry-mode loopback --passphrase='' --generate-key
- 실명 필드에 이름을 입력합니다.
- 이메일 주소에 이메일 주소를 입력하십시오.
- O를 입력하여 키 생성을 시작합니다.
- 키가 생성되면 옵션 O를 선택합니다.
GPG 버전 < 1.4 (또는 이전 명령에서 실패한 경우)
Git bash 명령 프롬프트에서 다음 명령을 실행하십시오.
gpg --gen-key
- 키 종류: 기본 옵션 선택 (1) RSA 및 RSA (기본값)
- 키 크기: 기본값 유지(2048)
- 키 유효성: 기본값을 0으로 유지하십시오. 이는 값 키 0이 만기되지 않기 때문입니다.
- 선택 확인: Y를 입력합니다.
- 실제 이름 필드에 사용자의 이름을 입력하십시오.
- 이메일 주소에 이메일 주소를 입력하십시오.
- 키 생성을 시작하려면 O를 입력합니다.
- 키가 생성되면 옵션 O를 선택합니다.
키 작성 확인
gpg 키가 작성되었는지 확인하십시오. 명령 프롬프트에서 다음 명령을 실행합니다:
gpg --list-keys
키가 나열되어 있는지 확인하십시오. Windows의 예제 출력:
$ gpg --list-keys
/c/Users/FredSmith/.gnupg/pubring.gpg
-------------------------------------
pub 2048R/1BB354B5 2021-06-08
uid Fred Smith <fred@company.com>
sub 2048R/F91C39A6 2021-06-08
키 내보내기
이 단계는 선택사항입니다. gpg 키를 내보낼 수 있도록 이 명령을 실행하십시오.
gpg --export-secret-key <Email Address>
반출되는 원시 키는 직접 복사되지 않아야 합니다. 이 단계에서 생성된 키는 Key Protect 인스턴스 또는 Secrets Manager 인스턴스에 안전하게 저장하는 것이 좋습니다. 세부사항은 다음 절을 참조하십시오.
키를 저장하십시오.
다음 방법 중 하나로 CI 파이프라인에 GPG 키를 제공해야 합니다.
- IBM® Key Protect for IBM Cloud®에 저장됨
- IBM Cloud® Secrets Manager에 저장됨
- CI 도구 체인에 직접 저장됨
가져오기 실패로 인한 CI 파이프라인 서명 오류를 방지하기 위해 키가 올바른 형식으로 복사되었는지 확인하십시오. 다음 명령에서 pbcopy ( Mac OS X ) 또는 clip (Windows Git bash)를 사용하여 주요 콘텐츠를 클립보드에 복사합니다.
Key Protect에 키를 저장하십시오.
GPG 키를 클립보드로 내보내고 복사하십시오.
Key Protect 인스턴스에 저장하기 전에 GPG 키를 이중 base64 인코딩해야 합니다.
OS X
gpg --export-secret-key <Email Address> | base64 | base64 | pbcopy
Windows™
gpg --export-secret-key <Email Address> | base64 -w0 | base64 -w0 | clip
Linux™
gpg --export-secret-key <Email Address> | base64 | base64
-
IBM Cloud 콘솔에서 이전 단계를 통해 생성된 GPG 키를 저장할 Key Protect 인스턴스를 선택하십시오.
-
추가+ 아이콘을 클릭하여 인스턴스에 새 키를 추가하십시오.
-
나만의 키 가져오기 옵션을 선택합니다.
-
키 유형을 표준 키로 선택합니다.
-
키 이름 필드에 적절한 이름을 입력합니다. 저장된 GPG 키는 나중에 이 키 이름으로 검색할 수 있습니다.
-
앞서 내보낸 키를 키 자료 필드에 복사합니다.
키를 복사하여 키 자료 필드에 붙여넣을 때 키 끝에 여분의 줄이 없는지 확인합니다.
-
키 링 선택 옵션을 기본값으로 선택합니다.
-
키 추가 를 클릭하여 키 보호에 키를 추가하십시오.
키 보호에 키 추가
Key Protect에 관한 자세한 정보는 Key Protect 문서를 참조하십시오.
Secrets Manager에 키를 저장하십시오.
Secrets Manager 인스턴스에 저장하기 전에 GPG 키의 단일 base64 인코딩이 필요합니다.
GPG 키를 클립보드로 내보내고 복사하십시오.
OS X
gpg --export-secret-key <Email Address> | base64 | pbcopy
Windows™
gpg --export-secret-key <Email Address> | base64 -w0 | clip
Linux™
gpg --export-secret-key <Email Address> | base64
-
IBM Cloud 콘솔에서 이전 단계를 통해 생성된 GPG 키를 저장할 Secrets Manager 인스턴스를 선택하십시오.
-
추가+ 아이콘을 클릭하여 인스턴스에 새 키를 추가하십시오.
-
기타 비밀 유형 옵션을 선택합니다.
기타 비밀 유형 -
키 유형 선택옵션에 대해 표준 키 유형을 선택하십시오.
-
이름 필드에 적절한 이름을 입력합니다. 저장된 GPG 키는 이 이름으로 나중에 검색할 수 있습니다.
-
비밀 값 으로 옵션을 선택하고 앞서 내보낸 키를 비밀 값 필드에 붙여넣습니다.
키를 복사하여 비밀값 필드에 붙여넣을 때 키 끝에 여분의 줄이 없는지 확인하세요.
-
추가 아이콘을 클릭하여 Key Protect 인스턴스에 키를 추가하십시오.
키 추가
Secrets Manager에 관한 자세한 정보는 Secrets Manager 시작하기를 참조하십시오.
개인 키를 내보내고 CI 파이프라인에 직접 저장하십시오.
이 접근 방식은 권장되지 않으며 실험용으로만 사용해야 합니다. 키를 저장할 때는 Key Protect 또는 Secrets Manager 을 사용하세요. 자세한 정보는 시크릿 저장소 구성 을 참조하십시오.
보안 파이프라인 특성으로 저장하기 전에 GPG 키의 단일 base64 인코딩이 필요합니다.
Key Protect 또는 Secrets Manager 인스턴스에 GPG 키를 안전하게 저장하십시오.
Mac OS X / Linux™
gpg --export-secret-key <Email Address> | base64
Windows™
gpg --export-secret-key <Email Address> | base64 -w0