GPG키 생성
IBM Cloud DevSecOps 지속적 통합 도구 체인에 의해 빌드되고 인벤토리에 기록되는 아티팩트는 프로덕션에 배치되기 전에 서명되어야 합니다. 연속 통합 파이프라인은 Skopeo 를 기본 도구로 사용하여 아티팩트 서명 기능을 제공합니다.
DevSecOps 연속 통합 파이프라인에서 사용되는 GPG키를 자동 또는 수동으로 작성하고 저장하십시오.
GPG키 자동 생성
이 방법을 사용하여 템플리트는 GPG키를 생성합니다. 다음 단계를 완료하여 키 생성을 위한 이름 및 이메일 을 입력하십시오.
-
아티팩트 서명 으로 이동하여 새로 작성을 클릭하십시오.
그림 1. 아티팩트 서명 -
창에서 이름 및 이메일 필드는 도구 체인 이름 및 이메일 ID로 미리 채워집니다. GPG키 요구사항을 반영하도록 이름 및 이메일 ID를 변경하십시오. 상자를 선택하여 비밀 정보 제공자에 키를 저장할 수도 있습니다.
그림 2. 이름 및 이메일 변경 -
키가 생성된 후 참조를 위해 복사할 수 있습니다.
그림 3아티팩트 서명 인증서
복사된 키는 base64
형식입니다. 키 링 으로 키를 가져오기 전에 키를 [디코드](/docs - draft/devsecops-workingtopic=devsecops-working-devsecops-async-stagesdevsecops-decoding-gpg-key.md)
하십시오.
echo <encoded_gpg_key> | base64 --decode
수동으로 GPG키 생성
GPG 명령행 도구 다운로드 및 설치
운영 체제에 맞는 GPG 명령행 도구 를 다운로드하여 설치하십시오. GnuPG 2진릴리스 섹션으로 이동하여 운영 체제에 맞는 도구를 다운로드하십시오.
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 명령이 비밀번호 문구를 요청하는 대화 상자를 여는 경우 비밀번호 문구 및 필드를 비워 두십시오. 이는 파이프라인이 비밀번호 문구로 보호되는 개인 키를 허용할 수 없는 이미지 서명의 (skopeo) 유틸리티에 대한 제한사항입니다. 작성 중에 비밀번호 문구를 제공하면 파이프라인이 인증서를 디코딩하는 데 실패하고 이미지 서명 단계에서 파이프라인이 실패합니다.
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 (기본값) 를 선택하십시오.
- keysize: 기본값 유지 (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>
반출되는 원시 키는 직접 복사되지 않아야 합니다. 이 단계에서 생성된 키를 {{site.data.keyword.keymanagementserviceshort}} 인스턴스 또는 {{site.data.keyword.secrets-manager_short}} 인스턴스에 안전하게 저장하는 것이 좋습니다. 세부사항은 다음 절을 참조하십시오.
키를 저장하십시오.
다음 방법 중 하나로 CI 파이프라인에 GPG 키를 제공해야 합니다.
- {{site.data.keyword.keymanagementservicefull}}에 저장됨
- {{site.data.keyword.secrets-manager_full}}에 저장됨
- CI 도구 체인에 직접 저장됨
가져오기 실패로 인한 CI 파이프라인 서명 오류를 방지하기 위해 키가 올바른 형식으로 복사되었는지 확인하십시오. 다음 명령에서 pbcopy
(Mac OS X) 또는 clip
(Windows Git bash) 를 사용하여 키 컨텐츠를 클립보드에 복사하십시오.
{{site.data.keyword.keymanagementserviceshort}}에 키를 저장하십시오.
GPG 키를 클립보드로 내보내고 복사하십시오.
GPG키를 {{site.data.keyword.keymanagementserviceshort}} 인스턴스에 저장하기 전에 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
-
{{site.data.keyword.cloud_notm}} 콘솔에서 이전 단계를 통해 생성된 GPG 키를 저장할 {{site.data.keyword.keymanagementserviceshort}} 인스턴스를 선택하십시오.
-
추가+ 아이콘을 클릭하여 인스턴스에 새 키를 추가하십시오.
-
사용자 키 가져오기 옵션을 선택하십시오.
-
키 유형 선택 을 표준 키로 선택하십시오.
-
키 이름 필드에 적절한 이름을 제공하십시오. 저장된 GPG키는 나중에 이 키 이름으로 검색할 수 있습니다.
-
키 자료 필드에서 이전에 내보낸 대로 키를 복사하십시오.
키를 복사하여 키 자료 필드에 붙여넣을 때 키 끝에 추가 행이 없는지 확인하십시오.
-
키 링 선택 옵션을 기본값으로 선택하십시오.
-
키 추가 를 클릭하여 키 보호에 키를 추가하십시오.
그림 4. 키 보호에 키 추가
{{site.data.keyword.keymanagementserviceshort}}에 관한 자세한 정보는 {{site.data.keyword.keymanagementserviceshort}} 문서를 참조하십시오.
{{site.data.keyword.secrets-manager_short}}에 키를 저장하십시오.
{{site.data.keyword.secrets-manager_short}} 인스턴스에 저장하기 전에 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
-
{{site.data.keyword.cloud_notm}} 콘솔에서 이전 단계를 통해 생성된 GPG 키를 저장할 {{site.data.keyword.secrets-manager_short}} 인스턴스를 선택하십시오.
-
추가+ 아이콘을 클릭하여 인스턴스에 새 키를 추가하십시오.
-
기타 시크릿 유형 옵션을 선택하십시오.
그림 5. 기타 시크릿 유형 -
키 유형 선택옵션에 대해 표준 키 유형을 선택하십시오.
-
이름 필드에 적절한 이름을 지정하십시오. 저장된 GPG 키는 이 이름으로 나중에 검색할 수 있습니다.
-
옵션을 시크릿 값 으로 선택하고 시크릿 값 필드에서 이전에 내보낸 대로 키를 붙여넣으십시오.
키를 복사하여 시크릿 값 필드에 붙여넣을 때 키 끝에 추가 행이 없는지 확인하십시오.
-
추가 아이콘을 클릭하여 {{site.data.keyword.keymanagementserviceshort}} 인스턴스에 키를 추가하십시오.
그림 6.
{{site.data.keyword.secrets-manager_short}}에 관한 자세한 정보는 {{site.data.keyword.secrets-manager_short}} 시작하기를 참조하십시오.
개인 키를 내보내고 CI 파이프라인에 직접 저장하십시오.
이 방법은 권장되지 않으며 실험에만 사용해야 합니다. Key Protect
또는 Secrets Manager
를 사용하여 키를 저장하십시오. 자세한 정보는 시크릿 저장소 구성 을 참조하십시오.
보안 파이프라인 특성으로 저장하기 전에 GPG 키의 단일 base64
인코딩이 필요합니다.
{{site.data.keyword.keymanagementserviceshort}} 또는 {{site.data.keyword.secrets-manager_short}} 인스턴스에 GPG 키를 안전하게 저장하십시오.
Mac OS X/ Linux™
gpg --export-secret-key <Email Address> | base64
Windows™
gpg --export-secret-key <Email Address> | base64 -w0