.. _linux-deploy-files2: 파일 배포 v2 ===================== .. note:: 파일 배포 플러그인은 CC 평가 항목에 포함되지 않으므로 CC 인증이 필요한 공공 기관에서는 이 플러그인을 사용할 수 없습니다. 파일 배포 플러그인은 파일을 실행하거나 특정 위치로 다운로드합니다. 정책 서버는 에이전트와 통신하여 단말에 파일을 배포, 실행 및 설치합니다. - 단말에 필요한 파일 배포 - 단말에 설치되지 않은 소프트웨어 설치 기존 파일 배포 플러그인에서 보안을 강화하는 데 중점을 둔 파일 배포 v2 플러그인이 추가되었습니다. 파일 배포 v2 플러그인은 안전한 파일 배포를 위해 파일 무결성 검증 및 배포자 신원 확인을 제공합니다. - 3단계 무결성 검증 수행 - 최종 사용자에 의한 배포자 식별 및 승인 파일 배포 v2 플러그인은 배포되는 파일에 대해 디지털 서명을 의무적으로 요구하며, 디지털 서명 및 서명 검증을 위해 공급망 보안을 위해 설계된 Sigstore 서명 방식을 사용합니다. 파일 배포 v2 플러그인은 Sigstore 서명의 두 가지 방식인 Sigstore Keyless Signing과 Public Key Signing을 선택적으로 사용할 수 있습니다. .. toctree:: :maxdepth: 1 sigstore +----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+ | 검증 방법 | Sigstore Keyless Signing (Keyless) | Public Key Signing (self-managed-key) | +======================+===========================================================================================================================================================================+=================================================================================================================+ | 검증 내용 | - Google/Github/MS의 OIDC(OpenID Connect)로 인증하여 신원 정보가 포함된 배포 파일에 디지털 서명 수행 | - 자체 소유한 개인키/공개키를 사용하여 배포 파일에 디지털 서명 수행 | | | - 파일을 수신하는 단말은 사용자 ID(예: Google ID) 및 OIDC(Google 계정) 정보를 사용하여 Sigstore 서명된 파일인지 확인 | - 검증을 위한 인증서(공개키)는 노드 액션 수신 시 배포됨 | +----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+ | 환경 설정 | - 인터넷 접속이 가능한 환경에서만 사용 가능 | - 인터넷 및 폐쇄망 환경 모두에서 사용 가능 | +----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+ | 키 관리 | - 별도의 키를 사용하지 않으므로 관리자 계정에 대한 보안만 필요 | - 별도의 개인키를 안전하게 보관해야 함 | +----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+ | 준비 사항 | - 배포 파일의 디지털 서명을 위해 Cosign 바이너리 파일 필요 (Sigstore GitHub Release v2.1.1 `download`_ 의 **Assets** 에서 cosign-windows-amd64.exe 다운로드) | - 배포 파일의 디지털 서명을 위해 Cosign 바이너리 파일 필요 | | | - 배포 파일의 디지털 서명/서명 검증을 위해 외부 인터넷 통신 필요 (서명 PC, 정책 서버, 사용자 단말) | - 배포 파일의 디지털 서명을 위해 키 필요, cosign을 사용하여 생성하거나 별도로 준비 가능 | | | - 배포 파일의 디지털 서명을 위해 OIDC(Google, Git, MS) 계정 필요 | | +----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+ | 제약 사항 | - 최초 등록된 배포자에서 다른 배포자로 변경 불가 | - 최초 등록된 배포자에서 다른 배포자로 변경 불가 | | | | - 배포 파일의 디지털 서명에 사용되는 키 파일은 별도로 관리해야 함 (예: USB) | +----------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------+ Sigstore Keyless Signing 방식 ------------------------------- | Sigstore는 **OpenID Connect (OIDC)를 사용하여 단기 인증서를 생성** 합니다. | **이 인증서는 소프트웨어 서명에 사용** 되며, 서명된 소프트웨어는 cosign을 통해 공개적으로 검증될 수 있습니다. OIDC는 로그인 인증을 사용하여 사용자에게 리소스 액세스를 제공하는 프레임워크인 OAuth 2.0의 확장입니다. OIDC는 사용자 비밀번호 없이 인증서를 생성할 수 있기 때문에 Sigstore에서 단기 인증서를 생성하는 데 사용됩니다. **Sigstore Keyless Signing 사용 방법** **1단계. 배포 파일 디지털 서명** 1. cosign을 다운로드하여 배포 파일의 디지털 서명에 사용할 디렉터리에 저장합니다. 2. 파일 이름을 cosign으로 변경합니다. 3. 디지털 서명할 파일을 해당 디렉터리에 복사합니다. 4. 터미널을 열고 cosign 파일이 있는 디렉터리로 이동합니다. 5. 아래 명령어를 입력하여 디지털 서명을 수행합니다: .. code-block:: bash > cosign sign-blob {배포_파일_이름} --output-certificate {생성된_인증서_파일_이름.cert} --output-signature {생성된_서명_파일_이름.sig} 6. 터미널에 표시된 URL 정보를 복사하여 브라우저를 사용하여 웹 페이지에 접속합니다. 7. 터미널에 표시된 8자리 값이 웹 페이지에 표시된 8자리 값과 동일한지 확인하고 ``Submit`` 버튼을 클릭합니다. 8. 세 가지 OIDC 중 하나를 선택합니다: ``Git, Google, Microsoft`` 그리고 인증을 수행합니다. 9. 잠시 후 터미널에 ``y`` 를 입력하여 서비스 약관에 동의합니다. 10. 디렉터리에 ``Cert, Sig`` 파일이 성공적으로 생성되었는지 확인합니다. **2단계. 디지털 서명 검증** 1. 터미널에서 아래 명령어를 입력합니다: .. code-block:: bash > cosign verify-blob {배포_파일_이름} --certificate {생성된_인증서_파일_이름.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 2. 디지털 서명이 성공적으로 수행되면 **Verified OK** 가 표시됩니다. **3단계. 노드 액션 생성** 1. 정책 서버 웹 콘솔에 접속하여 상단 메뉴의 **정책** 으로 이동합니다. 2. 왼쪽 메뉴에서 **노드 정책 > 노드 액션** 으로 이동합니다. 3. 상단 메뉴에서 **작업선택 > 생성** 을 클릭합니다. 아래는 **기본 설정** 입니다. 4. **액션 이름** 은 향후 운영 중 노드 액션을 쉽게 구분하기 위해 목적에 따라 "(목적)액션 이름" 형식을 사용합니다. 5. **설명** 은 목적에 따라 다르게 사용되는 경우 노드 액션의 목적을 구분하는 데 사용할 수 있습니다. 6. **라벨** 을 추가하면 "설명" 입력 필드에 표시되는 사용자 정의 라벨로 플러그인을 분류할 수 있습니다. 아래 **액션 수행 설정** 을 구성합니다. 7. **OS 종류** 는 macOS, Linux, Windows 대상 중 적절한 OS를 선택합니다.