Search for Well Architected Advice
< All Topics
Print

Centralize services for packages and dependencies

Centralizing services for software packages and dependencies is crucial for ensuring application security. It allows teams to validate packages before usage, reducing potential vulnerabilities and maintaining a clear overview of dependencies across the organization.

Best Practices

Establish a Centralized Package Management System

  • Utilize tools like AWS CodeArtifact to create a centralized repository for storing and managing software packages and dependencies. This ensures that all teams are accessing a validated source.
  • Implement strict access controls and permissions to regulate who can publish and update packages. This reduces the risk of malicious packages being introduced.
  • Regularly audit and inventory all packages in use across applications to identify outdated or vulnerable dependencies, ensuring the environment remains secure.
  • Integrate automated scanning tools (e.g., Snyk, WhiteSource) within your CI/CD pipelines to identify security vulnerabilities in third-party packages as they are integrated into your applications.
  • Provide training resources and documentation for developer teams on secure coding practices and how to evaluate the security of dependencies they use.

Automate Dependency Validation Processes

  • Use CI/CD tools to automate the validation of dependencies during the build process, ensuring that any package included in the application has passed security checks before deployment.
  • Set up policies and rules for automated checks that enforce compliance with your security standards, such as preventing the use of unapproved packages.
  • Implement version control for dependencies, ensuring teams update to the latest secure versions and monitor any security advisories related to the libraries they use.
  • Incorporate continuous monitoring solutions that track the security posture of open-source packages and notify teams about relevant vulnerabilities as they arise.

Foster Collaboration Across Teams

  • Encourage communication between development, security, and operations teams to share knowledge about security best practices, emerging threats, and compliance requirements.
  • Establish a feedback loop between developers and security teams, allowing developers to receive insights on security risks related to their dependencies and improve their code accordingly.
  • Create cross-functional working groups to review the organization’s software policies, including package sourcing and security practices, to ensure continuous improvement and alignment with industry standards.

Questions to ask your team

  • Do you have a centralized repository for software packages and dependencies?
  • How do you ensure that all software packages are validated for security before they are used in production?
  • Can you describe the process for identifying and mitigating vulnerabilities in dependencies?
  • What tools or automation do you use for monitoring and managing software dependencies?
  • How frequently are the dependencies reviewed and updated based on security assessments?
  • Are there guidelines in place for builder teams on the selection and use of third-party packages?
  • How do you track and analyze the usage of software dependencies across different teams in the organization?

Who should be doing this?

Security Architect

  • Design security frameworks for validating application security properties.
  • Establish protocols for evaluating software packages and dependencies.
  • Ensure integration of centralized service solutions within existing systems.

DevOps Engineer

  • Implement and maintain centralized services for package management.
  • Automate the validation processes for software dependencies.
  • Monitor and report on package usage and security vulnerabilities.

Software Developer

  • Adhere to security guidelines when selecting packages and dependencies.
  • Collaborate with security teams to assess the security properties of applications.
  • Participate in the testing and validation process to ensure compliance with security standards.

Security Analyst

  • Conduct analysis on software dependencies and their vulnerabilities.
  • Provide insights and recommendations based on security audits of packages.
  • Assist in training development teams on secure coding practices.

Compliance Officer

  • Ensure that centralized services adhere to regulatory requirements and security policies.
  • Conduct audits to validate the effectiveness of security measures in place.
  • Facilitate training sessions on compliance related to software package usage.

What evidence shows this is happening in your organization?

  • Package Validation Policy: A formal policy outlining the requirements for validating software packages and dependencies, including approval processes before utilization by development teams.
  • Centralized Dependency Management Dashboard: An interactive dashboard that provides real-time insights into the usage and security status of all software packages and dependencies across the organization.
  • Software Dependency Checklist: A checklist used by development teams to ensure that all software packages are sourced from approved centralized services and have undergone necessary security evaluations.
  • Automated Dependency Scanning Playbook: A playbook detailing the steps to automate the scanning of software dependencies for vulnerabilities prior to deployment, including tool configurations and scheduled scans.
  • Training Guide on Secure Package Management: A guide designed for developers that covers best practices for managing software packages securely, focusing on how to utilize the centralized services effectively.
  • Dependency Analysis Report: A report that analyzes the software dependencies used within applications, highlighting any potential risks and compliance with the established package validation policy.
  • Architecture Diagram for Centralized Services: A visual representation of the architecture used for centralized dependency management, illustrating how packages are validated and accessed by engineering teams.

Cloud Services

AWS

  • AWS Artifact: Provides on-demand access to AWS security and compliance reports, allowing organizations to validate the security of AWS services and ensure compliance with various standards.
  • Amazon Inspector: An automated security assessment service that helps improve the security and compliance of applications deployed on AWS by identifying vulnerabilities and deviations from best practices.
  • AWS CodeGuru: A developer tool that provides intelligent recommendations for code improvements including security vulnerabilities, enabling teams to incorporate security during the development phase.
  • AWS Systems Manager: Provides a unified interface for managing resources and applications including package management, allowing for centralized management and validation of software packages.

Azure

  • Azure DevOps: Provides development collaboration tools that allow teams to manage and monitor security practices throughout the software development lifecycle.
  • Azure Security Center: A unified infrastructure security management system that strengthens the security posture of data centers and provides advanced threat protection across hybrid workloads in the cloud and on-premises.
  • Azure Artifacts: Allows teams to share packages and manage dependencies, providing a centralized platform for validating packages before use.

Google Cloud Platform

  • Google Cloud Security Command Center: Helps to prevent security threats across Google Cloud services by providing visibility into security health and risk assessment including analyzing dependencies.
  • Google Container Registry: A service for storing and managing Docker images and containers which includes vulnerability scanning to assess the security of dependencies before use.
  • Cloud Build: A service to automate builds and tests for applications, integrating with security tools to ensure validation against vulnerabilities during development.

Question: How do you incorporate and validate the security properties of applications throughout the design, development, and deployment lifecycle?
Pillar: Security (Code: SEC)

Table of Contents