파일 배포v2
Note
파일 배포 플러그인은 CC 평가 항목에 포함된 기능이 아니므로 CC 인증을 요구하는 공공기관에서는 해당 플러그인을 사용할 수 없습니다.
파일 배포 플러그인은 파일을 실행하거나 특정 위치에 다운로드합니다. 정책서버는 에이전트와 통신하여 단말에게 파일에 대한 배포, 실행, 설치를 할 수 있습니다.
단말에 필요한 파일 배포
단말의 미설치 소프트웨어 설치
파일 배포v2 플러그인은 기존 파일배포 플러그인에서 보안성 강화에 치중하여 추가되었습니다.
파일 배포v2 플러그인은 안전한 파일 배포를 위해 파일 무결성 검증과 배포자 신원확인을 제공합니다.
3단계에 걸친 무결성 검증을 수행
최종 사용자의 배포자 식별 및 승인
파일 배포v2 플러그인은 배포하는 파일에 대한 전자서명을 필수로 요구하며 전자서명과 서명검증을 위해 공급망 보안을 위해 설계된 Sigstore Signing 방식을 사용합니다. 파일 배포v2 플러그인은 Sigstore Signing을 사용하여 Sigstore Keyless Signing과 Public Key Signing 2가지 방식을 선택적으로 사용할 수 있습니다.
검증 방식 |
Sigstore Keyless Signing (Keyless) |
Public Key Signing (self-managed-key) |
---|---|---|
검증 내용 |
|
|
환경 구성 |
|
|
키 관리 |
|
|
준비사항 |
|
|
제약사항 |
|
|
Sigstore Keyless Signing 방식
OIDC는 OAuth 2.0의 확장으로, 사용자에게 리소스에 대한 액세스를 제공하기 위해 로그인 인증을 사용하는 프레임워크입니다. OIDC는 사용자의 암호를 요구하지 않고도 인증서를 생성할 수 있기 때문에, Sigstore에서 짧은 유효 기간의 인증서를 생성하는 데 사용됩니다.
Sigstore Keyless Signing 사용 방법
Step1. 배포파일 전자서명
cosign을 다운로드 받아 배포파일 전자서명에 사용할 디렉토리에 저장합니다.
파일명을 cosign.exe로 변경합니다.
전자서명할 파일을 디렉토리에 복사합니다.
시작 > 실행 > cmd를 입력한 후 실행하여 cosign.exe 파일이 위치하는 디렉토리로 이동합니다.
아래 명령어를 입력하여 전자서명을 수행합니다.
> cosign.exe sign-blob {배포파일명} --output-certificate {생성할 cert 파일명.cert} --output-signature {생성할 시그니처 파일명.sig}
cmd창에 표시된 URL 정보를 복사하여 브라우저를 사용하여 Web페이지에 접속합니다.
cmd창에 표시된 8자리 문자 값과 cmd창에 표시된 8자리 문자값이 동일한지 확인하고
Submit
버튼을 클릭합니다.Git, Google, Microsoft
세가지 OIDC중 하나를 선택하고 인증을 수행합니다.잠시 후 cmd창에 서비스 약관 동의에
y
를 입력합니다.디렉토리내에
Cert, Sig
파일이 정상적으로 생성되었는지 확인합니다.
Step2. 전자서명 검증하기
시작 >창에서 아래 명령어를 입력합니다.
> cosign.exe verify-blob {배포파일명} --certificate {생성된 cert 파일명.cert} --signature {생성된 시그니처 파일명.sig} --certificate-identity={인증에 사용한 ID} --certificate-oidc-issuer={OIDC 발행자} 예시> cosign.exe verify-blob agent.zip --certificate agent.cert --signature agent.sig --certificate-identity=genian@genians.com --certificate-oidc-issuer=https://accounts.google.com
정상적으로 전자서명이 이루어진 경우 Verified OK 라고 표시됩니다.
Step3. 노드액션 생성하기
정책서버 Web콘솔에 접속하여 상단 정책 으로 이동합니다.
좌측 메뉴 노드정책 > 노드액션 으로 이동합니다.
상단 작업선택 > 생성 을 클릭합니다.
아래 기본설정 이 있습니다.
액션명 은 용도에 따라 "(용도)액션명" 형태로 사용하시면 향후 운영시 편하게 노드액션을 구분할 수 있습니다.
설명 은 용도에 따라 다르게 사용하는 경우 어떤 목적으로 사용하는 노드액션인지 구분할 수 있습니다.
라벨 을 추가하면 "설명" 입력란에 표시되는 맞춤 라벨로 플러그인을 분류 할 수 있습니다.
아래의 액션 수행설정 을 구성합니다.
OS 종류 는 macOS, Linux, Windows 대상에 맞는 OS를 선택합니다.
조건 설정 은 일반적으로 배포를 할 때 특정조건에 맞는 사용자에게 배포하기 위해 사용합니다.
예시: "c:\%ProgramFiles%\abc.exe 가 존재하지 않는 경우" 라는 조건을 사용하여 배포하게 되면 abc.exe 가 존재하지 않는 단말에만 배포가 가능합니다.
플러그인선택 에서는 파일 배포 V2 를 선택합니다.
배포 파일 에는
업로드
버튼을 클릭하여 파일을 선택합니다.배포파일 검증방법 은 Sigstore Keyless Signing을 선택합니다.
신뢰하는 OIDC 발행자 에는 전자서명 시 인증에 사용한 OIDC(Github, Google, Microsoft)를 선택합니다.
신뢰하는 ID 에는 전자서명 시 인증에 사용한 ID(email주소 형태)를 입력합니다.
Certificate 는 우측
파일읽기
버튼을 클릭하여 전자서명 시 생성되었던 cert 파일을 추가합니다.Signature 는 우측
파일읽기
버튼을 클릭하여 전자서명 시 생성되었던 sig 파일을 추가합니다.배포 옵션 의 경우 배포할 방식을 설정합니다.
파일 실행: 압축파일일 경우 "파일 경로"에 실행할 파일을 설정하고, "실행옵션"과 실행할 "수행 계정"을 설정하여 해당 파일을 실행시킵니다. "리부팅 옵션"을 통해 파일 실행 이후 리부팅여부를 설정합니다.
다운로드: 배포 파일을 복사할 단말의 파일 및 폴더 경로를 지정합니다.
수정 버튼을 클릭합니다.
왼쪽 정책 항목에서 노드정책 으로 이동한 후 기본정책 을 클릭합니다.
노드액션 설정 을 찾아 할당 버튼을 클릭합니다.
사용가능 항목에서 파일 배포 을 찾아 선택 항목으로 드래그하여 이동합니다.
수정 버튼을 클릭한 후 수정 버튼을 클릭합니다.
Note
Public Key Signing 방식
Public Key Signing 사용 방법
Step1. 배포파일 전자서명
Sigstore Keyless Signing 방식의 Step1 의 1~4 를 수행 후 다음으로 진행합니다.
별도로 사용하는 전자서명용 키가 없다면 아래 명령어를 입력하여 전자서명용 비밀키와 공개키를 생성합니다.
> cosign.exe generate-key-pair > 비밀키 패스워드 입력 > 비밀키 패스워드 확인 > dir 을 입력하여 비밀키(key) 파일과 공개키(pub) 파일이 생성되었는지 확인합니다.
키를 생성했다면 아래와 같이 생성한 키를 사용하여 배포파일에 전자서명을 수행합니다.
> cosign.exe sign-blob {배포파일명} --key cosign.key --tlog-upload=false --output-signature {생성할 시그니처 파일명.sig} 예시> cosign.exe sign-blob agent.zip --key cosign.key --tlog-upload=false --output-signature agent.sig
Step2. 전자 서명 검증하기
CMD창에서 아래 명령어를 입력합니다.
> cosign.exe verify-blob {배포파일명} --key {공개키 파일명.pub} --signature {생성된 시그니처 파일명.sig} --insecure-ignore-tlog=true --insecure-ignore-sct=true 예시> cosign.exe verify-blob agent.zip --key cosign.pub --signature agent.sig --insecure-ignore-tlog=true --insecure-ignore-sct=true
정상적으로 전자서명이 이루어진 경우 Verified OK 라고 표시됩니다.
Step3. 노드액션 생성하기
Sigstore Keyless Signing 방식의 Step3 의 1~10 를 수행 후 다음으로 진행합니다.
배포파일 검증방법 은 Public Key Signing을 선택합니다.
신뢰하는 공개키 는 우측
파일읽기
버튼을 클릭하여 키생성 시 함께 생성되었던 pub 파일을 추가합니다.Signature 는 우측
파일읽기
버튼을 클릭하여 전자서명 시 생성되었던 sig 파일을 추가합니다.Sigstore Keyless Signing 방식의 Step3 의 16~21 를 수행합니다.
Danger
Yubikey 를 이용한 개인키 관리방법
Public Key 방식으로 개인를 관리하면서, 관리되고있는 PC 의 포멧 등으로 사용되고 있는 키 분실 사례가 많이 발생하고 있습니다. 또 한 외부토큰에 개인키를 저장하면 물리적으로 분리되어 있어 해킹이나 악성 소프트웨어로부터 보호됩니다. 이러한 이유로 외부 토큰(YubiKey)을 이용하여 개인키를 안전하게 관리하는것을 권장합니다.
cosign piv-tool
명령으로 하드웨어 토큰을 관리하기 위한 유틸리티를 제공합니다.
Step1. Yubikey 초기화
이 소개에 사용된 모델 : yubikey 5 nfc
> cosign piv-tool resetDanger
하드웨어 토큰을 초기화 하는 명령어이므로 기존에 Yubikey 에 저장되어있는 인증서있다면 삭제됩니다.
Step2. Pin 설정
초기화 후 PIN 기본값은 123456
아래는 PIN 을 ‘111222’으로 정의한 예제입니다.
> cosign piv-tool set-pin --new-pin=111222 ? pin. This will overwrite the previous pin.: y Setting new pin. This will overwrite the previous pin.: y
Pin 이 이미 정의되어있는 상태에서 PIN 변경하려면 다음과 같이 명령어를 수행합니다.
> cosign piv-tool set-pin --old-pin=111222 --new-pin=232323 ? pin. This will overwrite the previous pin.: y Setting new pin. This will overwrite the previous pin.: y323
Pin 이 ‘111222’ 에서 ‘232323’ 으로 변경됩니다.
Step3. 인증서 생성
Yubikey에 인증서를 생성합니다.
> cosign piv-tool generate-key --random-management-key
Step4. 등록된 키 확인
Yubikey에 저장되어있는 인증서 정보를 출력합니다.
> cosign piv-tool attestation
Step5. 공개키 추출
앞서 위에서도 설명되었듯이 전자 서명 검증하기위해서는
대상파일
,공개키
,시그니처
가 필요합니다.다음 명령을 통하여 Yubikey 공개키를 파일로 내보내기 할 수 있습니다. publickey.pub 파일이 생성됩니다.
> cosign.exe public-key —sk > publickey.pub
Step6. 코드사인(Signature생성)
Public Key Signing 방식 - Step1. 배포파일 전자서명 에서의
cosign.exe sign-blob
명령과 유사하지만 스마트카드토큰을 사용하는것에 차이가 있습니다.piv 가 연결이 되어있으므로 이번 명령에서는
--key
항목을 생략하고 코드사인을 시도합니다.> cosign.exe sign-blob {배포파일명} --tlog-upload=false --output-signature {생성할 시그니처 파일명.sig} 예시> cosign.exe sign-blob agent.zip --tlog-upload=false --output-signature agent.sig > 등록된 PIN 입력 > Yubikey 에 물리적인 터치 수행
Step7. 무결성 확인
Public Key Signing 방식 - Step2. 전자 서명 검증하기 와 동일하게 수행합니다.