Valint의 강력한 기능에 대해 자세히 알아보는 블로그 시리즈의 두 번째 부분에 다시 오신 것을 환영합니다. 이 기사에서는 Valint의 정책 엔진과 공급망 전체의 규정 준수를 보장하는 중추적인 역할에 중점을 둘 것입니다.
이전 블로그 게시물에서는 다음에 대한 개요를 제공했습니다. Valint의 디자인 원칙.
정책 엔진의 작동 방식
Valint의 정책 엔진은 공급망에서 수집된 증거에 대해 검증된 정책으로 구성된 일련의 규칙에 따라 작동합니다. 주요 구성 요소를 분석해 보겠습니다.
증거: 정책에 의해 자동으로 사용되는 불변 객체입니다. 이러한 개체에는 정책 시행을 활성화하고 규정 준수 요구 사항을 충족하는 데 필요한 메타데이터가 포함되어 있습니다. 증거 콘텐츠에는 아티팩트, 이벤트 및 설정에 대한 메타데이터가 포함되지만 실제 보고서, 구성 또는 스캔을 수집할 수도 있습니다. 증거는 서명된 형식과 서명되지 않은 형식으로 모두 제공될 수 있습니다. Intoto를 팔로우하는 것이 좋습니다. 증명 사양 서명된 것을 활용하여 증명 및 부호 없는 형식입니다.
- 증명(AKA 검증 가능한 서명된 증거): 특정 사건과 관련된 검증 가능한 증거 환경적 맥락, 어떤 형태의 PKI 서명을 사용하여 신뢰를 전달합니다.
정책 : 이는 검증, 규정 준수 세부 사항 및 증거에 대한 최종 판결과 같은 다양한 측면을 다루면서 공급망이 충족해야 하는 요구 사항을 정의합니다. 예를 들어, 조직에는 "컨테이너 이미지 정책"이 있을 수 있습니다.
정책 규칙: 정책은 각각 특정 규정 준수 검사를 나타내는 규칙으로 구성됩니다. 그 예로는 서명 및 신원 확인, SBOM 구성 요소 확인, 심각한 취약점 부재 확인 등이 있습니다. 이전 예에 따르면 "컨테이너 이미지 정책"은 다음 규칙으로 구성될 수 있습니다.
- 이미지 서명을 시행합니다.
- 특정 라벨에 불만이 없는 이미지에 대해 경고합니다.
묶음: 전체적으로 편리하게 참조할 수 있는 정책 및 규칙 모음입니다. 번들은 정책 세트를 코드로 관리하고 적용하는 모듈식의 체계적인 방법을 제공합니다. Scribe 기본 정책 번들은 다음 위치에 게시됩니다. https://github.com/scribe-public/sample-policies, 자유롭게 참고하세요.
Valint와 함께 정책 사용
Valint는 사용자가 공개 또는 비공개 리포지토리의 코드로 정책을 사용할 수 있도록 지원하여 유연성과 사용자 정의 옵션을 제공합니다. 시작하려면 Valint를 설치하고 규정 준수 요구 사항에 따라 정책을 정의하기만 하면 됩니다.
설치: 제공된 스크립트를 사용하여 Valint 설치를 시작하세요. 터미널에서 다음 명령을 실행합니다.
curl -sSfL https://get.scribesecurity.com/install.sh | sh -s — -t valint
정책 정의: 다음으로 조직의 규정 준수 요구 사항에 따라 정책을 정의합니다. 다음과 같은 YAML 파일을 생성합니다. my_policy.yaml
, 원하는 규칙을 캡슐화하도록 구성합니다. 다음은 정책 파일의 모양에 대한 예입니다.
이름: my_image_policy 기본값: 증거: 서명됨: true 규칙: - 사용: Images/fresh-image@v1 with: max_days: 100 - 사용: Images/verify-labels-exist@v1 level: warning with: labels: # 이미지 필요 레이블 지정(Dockerfile LABEL 명령) - 유지관리자 # 유지관리자 레이블이 필요합니다. - org.opencontainers.image.source # 이미지에 소스 라벨이 지정되어야 합니다.
이 예에서는 다음과 같은 정책을 정의했습니다. my_image_policy
, 이는 증거 아티팩트에 서명해야 하며 이미지가 지난 100일 이내에 생성되어야 함을 요구합니다. 또한 이미지에 특정 레이블이 없으면 경고가 표시됩니다.
자유롭게 확인하십시오 다른 규칙 우리는 즉시 지원합니다.
증거 생성: 정책을 평가하기 전에 필요한 증거를 생성해야 합니다. Valint를 사용하여 대상 이미지에 대한 증거를 만듭니다.
valint bom nginx:latest -o attest
이 명령은 다음에 대한 증거를 생성합니다. nginx:latest
이미지 ID 및 생성 시간과 같은 메타데이터가 포함되어 있는지 확인합니다. 기본적으로 Valint는 시그스토어 OIDC ID를 인증서에 바인딩하는 증거 생성을 위한 서명자로 서비스됩니다. 그러나 Valint는 사용자 고유의 사용도 지원합니다. x509 서명을 위한 PKI 키 및 CA 체인.
서명할 OIDC 식별자를 선택하기만 하면 됩니다.
마지막으로 증거 생성 프로세스의 성공 여부와 ID를 검토하여 무결성과 신뢰성을 보장할 수 있습니다.
[2024-03-26 12:41:55] INFO 증명: [TRUSTED] 서명 성공, CA: fulcio-signer, CN: sigstore-intermediate, 이메일: [your_identity@gmail.com], URI: [] ... [2024-03-26 12:41:55] INFO 증명: 증거가 성공적으로 생성되었습니다.
정책 평가: 정책이 정의되고 증거가 생성되었으면 이제 공급망 구성 요소에 대해 이를 평가할 차례입니다. 활용 valint verify
명령 뒤에 대상 이미지와 정책 파일이 옵니다.
valint verify nginx:latest --policy my_policy.yaml
평가 요약:
평가가 완료되면 Valint 로그에서 제공하는 요약 테이블을 검토하세요.
이 특별한 경우 Valint 분석은 다음을 보여줍니다. nginx:latest
이미지가 신선도 요구 사항을 성공적으로 충족했지만 예상대로 라벨링 기준을 준수하지 않습니다. 제공된 표에는 각 규칙의 평가 상태가 간략하게 설명되어 있으며 증거가 적절하게 서명되었는지 여부를 표시합니다.
SARIF 형식의 결과:
또한 평가, 위반, 수준 및 증거 참조를 자세히 설명하기 위해 Valint가 생성한 SARIF 형식의 결과를 탐색할 수 있습니다.
지원되는 관리 플랫폼:
이 표준화된 형식은 GitHub, Azure 및 Scribe SAAS와 같은 다양한 보안 관리 시스템에서 지원됩니다. Scribe 플랫폼은 정책 결과를 처리할 뿐만 아니라 증거 관리를 용이하게 하고 취약성 관리, 지표 추적 등을 위한 광범위한 기능을 제공합니다.
정보 미리보기:
정책 결과에서 사용할 수 있는 정보를 간략하게 보려면 다음을 수행하세요.
{ "버전": "2.1.0", "$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json", "runs": [ { "tool": { "driver": { "informationUri": "https://scribesecurity.com", "name": "valint", "rules": [ { "id": "fresh -image", "name": "새 이미지", "shortDescription": { "text": "이미지가 임계값보다 오래되지 않았는지 확인하는 규칙" }, }, { "id": "labels", "name": "Labels", "shortDescription": { "text": "이미지에 필요한 레이블이 모두 있는지 확인하는 규칙" }, }, "results": [ { "ruleId": "fresh-image" , "ruleIndex": 0, "kind": "통과", }, { "ruleId": "labels", "ruleIndex": 1, "kind": "실패", "level": "경고", "정책" .violation": { "type": "라벨 누락", "details": [ { "label": "not_found" }, { "label": "org.opencontainers.image.source" } }, ... ] }
정책 번들
Valint의 번들은 코드 패키지로서의 정책입니다. Git 저장소 일련의 정책 및 규칙을 호스팅합니다. 사용자는 Valint에서 제공하는 샘플 저장소를 포크하고 필요에 따라 사용자 정의하여 자신만의 번들을 설정할 수 있습니다.
포크 및 사용자 정의: Valint's를 포크하여 시작하세요. 샘플 저장소. 조직의 요구 사항에 맞게 정책과 규칙을 사용자 정의하세요.
Valint에 제공: Valint에 사용자 정의 번들을 제공하십시오.
valint verify --bundle https://github.com/my_org/my_bundle.git \ --policy my_policy.yaml
맞춤 규칙
규칙을 사용자 정의할 때 기본적인 책임은 증거 페이로드를 구문 분석하고 정의된 규정 준수 기준에 따라 위반을 보고하는 것입니다. 기존 규칙을 수정하든, 새 규칙을 만들든 상관없습니다.
규정 준수 기준 정의: 조직 정책, 보안 표준 또는 규정을 기반으로 규정 준수 기준을 정의합니다.
증거 기준 정의: 규정 준수를 전달할 것으로 예상되는 증거를 정의합니다.
규정 준수 평가 및 위반 보고: 증거 페이로드를 사용하여 정의된 기준에 대한 준수 여부를 평가합니다. 구성 요소가 요구 사항을 충족하지 못하는 경우 위반을 보고합니다.
Valint는 모든 사용자 정의 규칙에 대해 서명 및 증거 원본 요구 사항을 쉽게 사용할 수 있도록 보장합니다.
Valint가 현재 고용하고 있는 동안 OPA 레고 규칙 공식화의 경우 Python 규칙이 가까운 미래에 통합될 예정이므로 흥미로운 지평선이 기다리고 있습니다.
무엇 향후 계획?
이제 Gatekeeper와의 통합이 가능해졌습니다! 우리를 참조하십시오 선적 서류 비치 자세한 내용은. 이 흥미로운 개발에 대해 자세히 알아보는 다가오는 블로그 게시물을 계속 지켜봐 주시기 바랍니다.
SLSA 및 SSDF와 같은 보안 프레임워크를 구현하는 높은 수준의 정책을 포함하여 정책 이니셔티브를 탐색할 향후 블로그 게시물을 주목하세요.
Python 매니아를 위한 흥미로운 소식입니다! 최신 업데이트에는 광범위한 Python 지원이 포함되어 있어 상당한 호환성 향상을 제공합니다. 이를 통해 정책 작성자는 Python을 사용하여 규칙을 사용자 정의하고 광범위한 라이브러리를 활용할 수 있습니다.
결론
요약하자면 Valint의 정책 엔진은 공급망 내 규정 준수를 보장하기 위한 강력한 솔루션을 제공합니다. 증거, 정책, 번들 등의 구성요소를 활용함으로써 조직은 규정 준수 노력을 간소화하고 위험을 효과적으로 완화할 수 있습니다.
이 콘텐츠는 소프트웨어 공급망 전반에 걸쳐 코드 아티팩트와 코드 개발 및 전달 프로세스에 최첨단 보안을 제공하는 선도적인 엔드투엔드 소프트웨어 공급망 보안 솔루션 제공업체인 Scribe Security에서 제공합니다. 자세히 알아보기.