파일 배포v2
Note
파일 배포 플러그인은 CC 평가 항목에 포함된 기능이 아니므로 CC 인증을 요구하는 공공기관에서는 해당 플러그인을 사용할 수 없습니다.
파일 배포 플러그인은 파일을 실행하거나 특정 위치에 다운로드합니다. 정책서버는 에이전트와 통신하여 단말에게 파일에 대한 배포, 실행, 설치를 할 수 있습니다.
단말에 필요한 파일 배포
단말의 미설치 소프트웨어 설치
파일 배포v2 플러그인은 기존 파일배포 플러그인에서 보안성 강화에 치중하여 추가되었습니다.
파일 배포v2 플러그인은 안전한 파일 배포를 위해 파일 무결성 검증과 배포자 신원확인을 제공합니다.
3단계에 걸친 무결성 검증을 수행
최종 사용자의 배포자 식별 및 승인
파일 배포v2 플러그인은 배포하는 파일에 대한 전자서명을 필수로 요구하며 전자서명과 서명검증을 위해 공급망 보안을 위해 설계된 Sigstore Signing 방식을 사용합니다. 파일 배포v2 플러그인은 Sigstore Signing을 사용하여 Sigstore Keyless Signing과 Public Key Signing 2가지 방식을 선택적으로 사용할 수 있습니다.
Sigstore Keyless Signing 방식
OIDC는 OAuth 2.0의 확장으로, 사용자에게 리소스에 대한 액세스를 제공하기 위해 로그인 인증을 사용하는 프레임워크입니다. OIDC는 사용자의 암호를 요구하지 않고도 인증서를 생성할 수 있기 때문에, Sigstore에서 짧은 유효 기간의 인증서를 생성하는 데 사용됩니다.
Sigstore Keyless Signing 사용 방법
Step1. 배포파일 전자서명
cosign을 다운로드 받아 배포파일 전자서명에 사용할 디렉토리에 저장합니다.
파일명을 cosign 으로 변경합니다.
전자서명할 파일을 디렉토리에 복사합니다.
터미널에서 cosign 파일이 위치하는 디렉토리로 이동합니다.
아래 명령어를 입력하여 전자서명을 수행합니다.
> cosign sign-blob {배포파일명} --output-certificate {생성할 cert 파일명.cert} --output-signature {생성할 시그니처 파일명.sig}
잠시 후 터미널에 서비스 약관 동의에
y
를 입력합니다.인증을 위한 URL이 브라우저로 실행되면,
Git, Google, Microsoft
세가지 OIDC중 하나를 선택하고 인증을 수행합니다.디렉토리내에
Cert, Sig
파일이 정상적으로 생성되었는지 확인합니다.
Step2. 전자서명 검증하기
터미널에서 아래 명령어를 입력합니다.
> cosign verify-blob {배포파일명} --certificate {생성된 cert 파일명.cert} --signature {생성된 시그니처 파일명.sig} --certificate-identity={인증에 사용한 ID} --certificate-oidc-issuer={OIDC 발행자} 예시> cosign 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 파일을 추가합니다.배포 옵션 의 경우 배포할 방식을 설정합니다.
앱 실행: 앱 파일(.app)을 실행합니다.
파일 실행: 압축파일일 경우 "파일 경로"에 실행할 파일을 설정하고, "실행옵션"과 실행할 "수행 계정"을 설정하여 해당 파일을 실행시킵니다. "리부팅 옵션"을 통해 파일 실행 이후 리부팅여부를 설정합니다.
다운로드: 배포 파일을 복사할 단말의 파일 및 폴더 경로를 지정합니다.
패키지 설치: macOS 패키지 파일(.pkg) 파일을 단말에 설치합니다.
파일 열기: 업로드 된 파일을 실행(open)합니다.
스크립트 실행: 업로드 된 스크립트 파일을 실행(sh)합니다.
수정 버튼을 클릭합니다.
왼쪽 정책 항목에서 노드정책 으로 이동한 후 기본정책 을 클릭합니다.
노드액션 설정 을 찾아 할당 버튼을 클릭합니다.
사용가능 항목에서 파일 배포 을 찾아 선택 항목으로 드래그하여 이동합니다.
수정 버튼을 클릭한 후 수정 버튼을 클릭합니다.
Note
Public Key Signing 방식
Public Key Signing 사용 방법
Step1. 배포파일 전자서명
Sigstore Keyless Signing 방식의 Step1 의 1~4 를 수행 후 다음으로 진행합니다.
별도로 사용하는 전자서명용 키가 없다면 아래 명령어를 입력하여 전자서명용 비밀키와 공개키를 생성합니다.
> cosign generate-key-pair > 비밀키 패스워드 입력 > 비밀키 패스워드 확인 > ls 을 입력하여 비밀키(key) 파일과 공개키(pub) 파일이 생성되었는지 확인합니다.
키를 생성했다면 아래와 같이 생성한 키를 사용하여 배포파일에 전자서명을 수행합니다.
> cosign sign-blob {배포파일명} --key cosign.key --tlog-upload=false --output-signature {생성할 시그니처 파일명.sig} 예시> cosign sign-blob agent.zip --key cosign.key --tlog-upload=false --output-signature agent.sig
Step2. 전자 서명 검증하기
CMD창에서 아래 명령어를 입력합니다.
> cosign verify-blob {배포파일명} --key {공개키 파일명.pub} --signature {생성된 시그니처 파일명.sig} --insecure-ignore-tlog=true --insecure-ignore-sct=true 예시> cosign 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