Search for Well Architected Advice
Validate software integrity
Validating software integrity is crucial to safeguarding your compute resources from both external and internal threats. Implementing code signing allows you to ensure that your software and libraries are from trusted sources and haven’t been tampered with, providing an essential layer of security.
Best Practices
Implement Robust Code Signing Practices
- Utilize AWS Signer to set up a code signing workflow that integrates seamlessly into your CI/CD pipeline, ensuring that all code and artifacts are signed before deployment.
- Establish a dedicated key management process to securely manage and rotate the keys used for signing your code, limiting exposure to potential threats.
- Regularly review and audit your signing process and logs for anomalies to ensure software integrity and compliance with organizational policies.
Adopt Software Integrity Verification Techniques
- Use checksum validation for all downloaded dependencies, libraries, and packages by comparing them against the provided checksums for integrity verification.
- Incorporate automated tools that perform checksum checks during your deployment process, ensuring that the actual files match the expected values before execution.
- Regularly update the list of trusted sources and maintain an updated repository of checksums to align with the latest versions of your dependencies.
Educate Development Teams on Security Best Practices
- Conduct training sessions for your development teams on the importance of code signing and software integrity, helping them understand potential risks associated with unverified code.
- Encourage a culture of security awareness where developers are motivated to adhere to best practices related to code validation and signing.
- Create documentation and guidelines that outline the processes for validating software integrity, making it easy for teams to reference during development.
Questions to ask your team
- Have you implemented code signing for all software and libraries used in your compute resources?
- What tools are you using to manage the code signing lifecycle?
- How do you verify the integrity of software before deploying it to your compute resources?
- Are there processes in place to regularly review and update your code signing practices?
- How do you ensure that checksums for downloaded files are verified against the provider’s checksum?
- What monitoring or alerting mechanisms do you have for any integrity violations?
- Have you documented the procedures for handling detected integrity issues?
Who should be doing this?
Security Engineer
- Implement code signing processes using AWS Signer.
- Configure and manage the code signing lifecycle.
- Ensure that all software libraries and code are from trusted sources.
- Monitor and validate the integrity of software through checksum comparisons.
- Conduct regular audits to verify that all compute resources adhere to security policies.
DevOps Engineer
- Integrate code signing and validation processes into CI/CD pipelines.
- Ensure that software deployed to compute resources is validated before release.
- Automate the checksum comparison for software downloads.
- Collaborate with security teams to identify and remediate potential vulnerabilities in software deployments.
Compliance Officer
- Establish policies and procedures for software integrity validation.
- Conduct training sessions on the importance of software integrity to relevant teams.
- Review and assess compliance with software security standards and practices.
- Report on software integrity compliance metrics to management.
What evidence shows this is happening in your organization?
- Code Signing Policy: A formal policy document outlining the requirements and processes for code signing in the organization, including responsibilities, tools used, and compliance measures.
- AWS Signer User Guide: A comprehensive guide that details how to set up and use AWS Signer for managing code signing lifecycles and verifying software integrity.
- Software Integrity Verification Checklist: A checklist to ensure all software and code are validated for integrity before deployment, including steps for checking checksums and validating signatures.
- Incident Response Playbook for Software Integrity: A playbook that outlines the actions to take in the event of a software integrity breach, including detection, containment, and remediation procedures.
- Dashboard for Software Integrity Monitoring: A curated dashboard that visualizes software integrity statuses, including the results of code signing verifications and checksum comparisons.
- Risk Assessment Report for Compute Resources: A report assessing the risks associated with compute resources, including potential threats to software integrity and recommended mitigation strategies.
Cloud Services
AWS
- AWS Signer: AWS Signer helps you create and manage code-signing profiles, enabling you to validate the integrity of your code and AWS Lambda functions.
- Amazon S3: You can store your software packages in S3 and use S3 Object Lambda to validate the integrity of these packages using checksums.
- AWS CodeBuild: AWS CodeBuild can be configured to use code-signing and integrity validation as part of your continuous integration pipeline.
Azure
- Azure DevOps: Azure DevOps enables signing of artifacts, supporting software integrity verification through code signing across your CI/CD pipelines.
- Azure Blob Storage: You can store and manage your software artifacts in Blob Storage and use content MD5 checksums for integrity validation.
Google Cloud Platform
- Google Cloud Build: Google Cloud Build can integrate with third-party signing tools to sign your builds and verify the integrity of your deployment packages.
- Google Cloud Storage: You can store your artifacts in Cloud Storage and leverage Object Versioning and integrity checks to ensure file integrity.
Question: How do you protect your compute resources?
Pillar: Security (Code: SEC)