이 문서는 JFrog Artifactory에서 서명 키, SSH 키 등의 관리 가이드를 공유하기 위해 작성되었다.
도구명 | JFrog Artifactory |
---|---|
문서 작성 기준 버전 | 7.84.14 |
지원 Edition | ENTERPRISE X ENTERPRISE + |
목차
개요
Artifactory의 키 관리 기능을 사용하면 아티팩트를 암호화하거나 디지털 서명하는 데 사용되는 키를 한 곳에서 만들고 조직 전체적으로 관리하기에 용이합니다.
키 관리 기능의 이점
이 기능을 사용하면 다음과 같은 Artifactory 보안 설정을 구성할 수 있습니다.
- Signing Key (서명 키) : 인증을 위해 패키지에 서명하는 데 사용되는 GPG 및 RSA 서명 키와 Alpine Linux 인덱스 파일에 서명하고 확인하는 데 사용되는 RSA 키를 관리합니다.
- Java KeyStore : 가상 저장소에서 다운로드한 JAR 파일을 자동으로 서명하는 데 사용되는 서명 키를 보관하는 Key Store를 관리합니다.
- SSH Key : Git LFS 클라이언트나 JFrog CLI에서 JFrog 플랫폼으로 전송된 요청을 인증하기 위해 SSH 키를 구성합니다.
서명 키 관리하기
- 관리자 메뉴 → Artifactory → Security - Keys Management → + Add Keys
RSA Key 추가
JFrog 플랫폼을 사용하면 여러 쌍의 RSA 서명 키를 관리하여 인증을 위해 Alpine 패키지에 서명할 수 있습니다.
- Key를 식별 가능한 이름과 별칭 입력
- Private Key 추가
- Public Key 추가
- Pass Phrase 추가 (선택 사항)
GPG 키 생성
리눅스에서 GPG public key와 private key를 생성하는 방법입니다. 다음 예시 코드는 Ubuntu 22.04 버전을 토대로 작성되었습니다.
# 키 생성 gpg --gen-key # 프롬프트 창에서 userId와 이메일 Passphrase 설정 # 시스템의 모든 키 나열 및 Artifactory에서 사용하려는 쌍 선택 gpg --list-keys --keyid-format=long # 관련 라이선스를 선택하여 목록-키에서 키-ID 확인 pub rsa3072/31864F1B... 2024-08-28 [SC] [expires: 2026-08-28] uid [ultimate] UserID <Email> sub rsa3072 2024-08-28 [E] [expires: 2026-08-28] # 지정된 ID를 가진 개인 키를 파일로 내보내기 gpg --output {개인 키 파일 이름 및 경로} --armor --export-secret-keys {키-ID / 예시) 31864F1B... } # 지정된 ID를 가진 공개 키를 파일로 내보내기 gpg --output {공개 키 파일 이름 및 경로} --armor --export {키-ID / 예시) 31864F1B... }
GPG 키 추가
RSA 키 추가하는 방법과 동일합니다. 새로운 GPG 키를 업로드한 후에는 JFrog Distribution에 사용할 수 있습니다.
키 다운로드 또는 삭제
- 다운로드 또는 삭제하고자 하는 키의 클릭 → Download / Delete
Vault에 RSA / GPG 키 추가 설정
(작성중)
Java Key Store
Java Key Store : 가상 저장소에서 다운로드한 JAR 파일을 자동으로 서명하는 데 사용되는 서명 키를 보관하는 키 저장소
키 쌍 생성
JAR 파일에 서명하려면 Key Store에 추가할 키 쌍을 우선 생성해야 합니다.
JRE (Java Runtime Environment)에 내장된 Oracle의 keytool
유틸리티로 명령을 실행하여 만들 수 있습니다.
다음은 keytool 로 키 쌍을 생성한 코드의 예시입니다.
keytool -keystore <keystore 파일명> -keypass <키 패스워드> -storepass <store 패스워드> -alias <store 별칭> \ -genkeypair -dname "cn=<사용자명>, ou=<부서명>, o=<기관명>, S=<도시>, c=<국가>" # key algorithm을 특정해야 하는 경우 -keyalg rsa 옵션 추가 # KeyStore 내 인증서 목록을 출력하여 생성 확인 $ keytool -list -keystore <keystore 파일명> # 목록 출력 예시 Enter keystore password: # store 패스워드 입력 Keystore type: JKS Keystore provider: SUN Your keystore contains 1 entry mykey, Aug 28, 2024, PrivateKeyEntry, Certificate fingerprint (SHA-256): F8:1A:47:...
Key Store 및 JAR 서명 키 설정
- Key Store 패스워드 생성 또는 기존의 패스워드 수정 업데이트
- 패스워드를 생성하면 나머지 필드가 활성화됨 - Key Store 파일 업로드, 설정했던 Key Store 패스워드 입력
- 키 쌍 이름 설정, 설정했던 키의 패스워드 입력, 키 쌍의 별칭 선택
- 키 쌍 선택 후 제거 가능
JAR에 서명하기 위한 가상 저장소 설정
Key Store를 설정하고 나면 가상 저장소 (Virtual Repository)에 키 쌍을 구성할 수 있습니다.
- 관리자 메뉴 → Repositories → Virtual → 저장소 선택 (편집) → Advanced → Key-Pair
- Advanced 메뉴 탭
- 저장해 둔 키 쌍 선택
SSH 키 관리
JFrog Artifactory는 RSA Public / Private 키를 사용하여 Git LFS 및 JFrog CLI에 대한 SSH 인증을 지원합니다.
이를 통해 SSH를 통해 인증된 Artifactory 서버와 민감한 정보를 교환할 수 있습니다.
SSH 인증의 주요 단계
- 서버는 클라이언트에게 자신을 인증
- 사용자는 서버에 자신을 인증
SSH 서버 인증 구성
Artifactory에 대한 SSH 키 쌍을 생성합니다. 다음은 리눅스에서 생성한 예시입니다.
ssh-keygen -t rsa -C "server@domain.com"
관리자 메뉴 → Artifactory → Security - Key Management → SSH Keys
- SSH Keys 관리 메뉴
- SSH Server 설정 : 포트, Base URL 입력
- Server key 파일 업로드
사용자 인증 구성
Git LFS 클라이언트나 Artifactory CLI에서 Artifactory에 요청을 보낼 때 인증을 받을 수 있도록 공개 키로 Artifactory를 구성합니다.
Artifactory에 대한 SSH 키 쌍을 ~/.ssh
디렉토리 하위에 생성합니다. 다음은 리눅스에서 생성한 예시입니다.
ssh-keygen -t rsa -C "USER@domain.com"
사용자 프로필에 SSH 공개 키를 등록해야 합니다.
상단 메뉴 바의 오른쪽 사용자 id 드롭다운 메뉴 중 Edit Profile에서 Add New SSH Key
SSH로 Git LFS 인증하기
Artifactory는 SSH를 통해 Git LFS 클라이언트 인증을 지원합니다.
- Artifactory의 SSH 구성 정보 확인
- 사용자 프로필의 SSH 섹션에 SSH 공개 키를 업로드
- Git LFS 클라이언트 구성
- Artifactory 서버 공개 키로
~/.ssh/known_hosts/
known_hosts
파일을 업데이트# 형식 [<server_custom_base_URL>]:<server_port> <content of the Artifactory server public ssh key> # 예시 [myartifactory.company.com]:1339 ssh-rsa AAAAB3Nza...PC0GuTJT9TlaYD user@domain.com
- .lfsconfig 다음과 같이 저장소 수준 (글로벌 )에서 파일을 업데이트
# 형식 # USERNAME 필드는 선택이지만, 자체 참조를 위해 추가하는 것이 좋음 ssh://$USERNAME@$HOST:$PORT/artifactory/<repoKey> # 예시 url = "ssh://john@myartifactory.company.com:1339/artifactory/lfs-local"
- Artifactory 서버 공개 키로
SSH 서버 보안 제어
JFrog 플랫폼 관리자 권한이 필요합니다.
이제 Artifactory SSH 서버에서 허용하는 암호, MAC, 서명 및 키 교환 알고리즘을 제어할 수 있습니다.
기본적으로는 비어있거나 null 값이며, 쉼표(,)로 구분된 복수 값을 가질 수 있으며 artifactory.ssh.*.algorithms
가 설정되어 있지 않은 경우에만 적용됩니다.
SSH 설정을 위해 시스템 속성 패턴 포함
다음 상수 값들이 Include Only
알고리즘으로 추가되었습니다.
artifactory.ssh.cipher.algorithms=
artifactory.ssh.key.exchange.algorithms=
artifactory.ssh.mac.algorithms=
artifactory.ssh.signature.algorithms=
SSH 설정을 위해 지원되는 알고리즘 유형별 값 (values)
알고리즘 유형 | 값 (기본적으로 로드됨) | 더 이상 사용되지 않음 (이름으로 구성하지 않으면 로드되지 않음) |
---|---|---|
Cipher Algorithms |
|
|
Key Exchange Algorithms |
|
|
Message Authentication Codes (MAC) |
|
|
Signature Algorithms |
|
|
참조
- https://jfrog.com/help/r/jfrog-platform-administration-documentation/security-keys-management
- https://jfrog.com/help/r/jfrog-artifactory-documentation/authenticate-git-lfs-with-ssh