Notary Project in Cloud-Native Engineering
Category: security
Status: Sandbox
Stars: 4,100
Last Updated: 2026-04-22
Primary Language: Go
Documentation: https://notaryproject.dev/
Purpose and Use Cases
What Problem Does It Solve?
The Notary Project addresses the critical need for content trust and supply chain security in container and software distribution. Without proper content verification, attackers can inject malicious code into container images, Helm charts, or other software artifacts that are then deployed to production environments. Notary provides a framework for signing and verifying artifact integrity and authenticity.
When to Use This Project
Use Notary when you need:
- Sign and verify container images and artifacts
- Prevent tampering with software supply chain
- Ensure artifact authenticity from trusted publishers
- Implement keyless signing with Sigstore integration
- Manage signing keys securely across teams
- Verify artifact integrity before deployment
Key Use Cases
- Container Image Signing: Sign Docker images before pushing to registry
- Helm Chart Signing: Verify Helm chart authenticity before deployment
- Artifact Integrity: Ensure artifacts haven't been modified in transit
- Supply Chain Security: Implement SLSA compliance with artifact signing
- Key Management: Securely manage signing keys with Keyless or KMS
- CI/CD Integration: Automate signing and verification in pipelines
Architecture Design Patterns
Core Components
- Notary Server: Centralized server for managing signing keys and metadata
- Notary Client: CLI tool for signing and verifying artifacts
- TUF (The Update Framework): Framework for secure software updates
- Delegated Signers: Multiple signers with specific roles and authorities
- Key Management: Secure storage and management of signing keys
- Signatures Storage: Separate storage for signature metadata
- Notary V2: Modern implementation with Sigstore integration
Component Interactions
- Publisher → Notary Client: Request to sign artifact
- Notary Client → TUF: Create metadata for artifact and signatures
- TUF → Key Manager: Access signing keys for signature generation
- Notary Client → Registry: Push artifact and signature metadata
- Consumer → Registry: Pull artifact and signature metadata
- Consumer → Notary Client: Verify artifact authenticity
- Notary Client → Key Manager: Verify signature with public keys
Data Flow Patterns
- Signing Flow: Artifact → TUF metadata → Signature → Push to registry
- Verification Flow: Pull artifact + signatures → Verify signature → Verify TUF metadata → Trust
- Key Rotation: New keys → TUF metadata update → Push to registry → Clients update
- Delegation Flow: Delegated signer → Signature → TUF metadata → Verification
Design Principles
- Security First: Defense in depth with multiple verification layers
- Flexible Signing: Support for multiple signing methods (keyless, KMS, traditional)
- Decentralized Trust: TUF allows for multiple delegatable signers
- Standard Format: Use standard TUF metadata format for interoperability
- Key Rotation: Support for key rotation without service disruption
- Verifiable History: Complete history of all artifact changes
Integration Approaches
Integration with Other CNCF Projects
- Containerd: Sign and verify container images via containerd
- Docker: Integrate Notary with Docker for image signing
- Kubernetes: Verify images in admission controllers
- Helm: Sign and verify Helm charts
- Kaniko: Sign images built with Kaniko
- Tekton: Automate signing in CI/CD pipelines
- Grafana: Verify artifact integrity in monitoring
API Patterns
- Registry API: Extend OCI registry with signature storage
- Notary CLI: Command-line interface for signing and verification
- REST API: HTTP API for programmatic access
- TUF Metadata API: Access and update TUF metadata
Configuration Patterns
- Signing Keys: Configure key storage (local, KMS, Keyless)
- Delegation: Set up delegated signer roles
- Registry Integration: Configure registry for signature storage
- Verification Policies: Define trust policies for verification
Extension Mechanisms
- Custom Key Management: Support additional KMS providers
- Custom Verifiers: Implement custom verification logic
- Webhooks: Notify on signing events
- Metrics Export: Extend metrics with custom data
Common Pitfalls and How to Avoid Them
Configuration Issues
- Key Storage: Ensure signing keys are properly secured
- TUF Metadata: Keep TUF metadata synchronized with artifacts
- Root Keys: Secure root keys and establish key rotation procedures
- Registry Integration: Verify registry supports Notary signatures
- Delegation Setup: Properly configure delegated signer permissions
Performance Issues
- Signature Verification: Optimize verification for large artifact sets
- Metadata Refresh: Balance metadata freshness with performance
- Network Latency: Minimize network calls for signature verification
Operational Challenges
- Key Recovery: Implement secure key backup and recovery procedures
- Metadata Sync: Ensure consistent TUF metadata across clients
- Version Compatibility: Manage compatibility between Notary V1 and V2
- Rolling Updates: Plan for zero-downtime updates
Security Pitfalls
- Key Exposure: Never store private keys in plaintext
- Unverified Artifacts: Always verify before deploying
- Stale Metadata: Regularly refresh TUF metadata
- Insufficient Delegation: Overly broad delegation permissions
Coding Practices
Idiomatic Configuration
- Keyless Mode: Use Sigstore for keyless signing
- KMS Integration: Use cloud KMS for enterprise key management
- Delegation YAML: Declarative delegation configuration
- Verification Policies: Define trust policies in YAML
API Usage Patterns
- Sign Command: Sign artifacts via Notary CLI
- Verify Command: Verify artifact authenticity
- TUF Metadata Query: Query TUF metadata programmatically
- Delegation Management: Manage delegated signers
Observability Best Practices
- Signing Events: Log signing events for audit
- Verification Failures: Monitor and alert on verification failures
- Key Rotation: Track key rotation events
- TUF Sync: Monitor TUF metadata synchronization
Development Workflow
- Local Testing: Test signing and verification locally first
- Staging Environment: Verify signing workflow in staging
- CI/CD Integration: Automate signing in CI/CD pipelines
- Rollback Plans: Test recovery from key loss or corruption
Fundamentals
Essential Concepts
- Artifact: Software being signed (container image, Helm chart, binary)
- Signature: Cryptographic proof of artifact authenticity
- TUF Metadata: Signed metadata describing artifact versions and signatures
- Delegation: Authorizing specific signers for specific paths
- Root Key: Top-level key that signs all TUF metadata
- Snapshot/Targets: TUF metadata types for artifact management
- Keyless: Sigstore-based signing without key management
Terminology Glossary
- Artifact: Software being distributed with Notary
- Signature: Cryptographic signature of artifact
- TUF: The Update Framework for secure software updates
- Targets: Metadata type for artifact listings
- Snapshot: Metadata for version tracking
- Delegation: Authorized signer with limited scope
- Root Key: Top-level key in TUF hierarchy
- Keyless: Sigstore-based signing approach
Data Models and Types
- Artifact: Name, digest, signature, metadata
- TUF Metadata: Signed metadata for artifact versions
- Signature: Cryptographic signature and key information
- Delegation: Delegated signer configuration
- Key: Public/private key pair for signing
Lifecycle Management
- Signing Lifecycle: Artifact → Sign → Push → Metadata updated
- Verification Lifecycle: Pull → Verify → Trust/Deny → Deploy
- Key Lifecycle: Generate → Distribute → Rotate → Compromise response
- TUF Update: Metadata refresh → Verification → Deployment
State Management
- Artifact State: Signed, unsigned, verified, unverified
- Key State: Active, rotated, compromised, revoked
- Metadata State: Current, outdated, synced, desynced
Scaling and Deployment Patterns
Horizontal Scaling
- Notary Server Scaling: Scale for high-throughput signing operations
- Signature Storage: Scale storage for large artifact sets
- Verification Load: Scale verification servers for parallel checks
High Availability
- Server Redundancy: Deploy multiple Notary servers
- Database HA: Use HA database for metadata storage
- Key Backup: Secure backup of all signing keys
- Certificate Management: Automated certificate renewal
Production Deployments
- Production Server: Deploy Notary with HA configuration
- Sigstore Integration: Use Sigstore for keyless signing
- KMS Integration: Use enterprise KMS for key management
- Monitoring: Set up alerting for signing and verification issues
Upgrade Strategies
- Minor Version: In-place upgrade with metadata compatibility
- Major Version: Plan migration with testing
- TUF Version: Handle TUF metadata version transitions
- Rollback Plan: Keep previous version available
Resource Management
- Storage: Monitor metadata storage usage
- Memory: Configure memory for signature verification
- CPU: Balance signing and verification workload
- Network: Monitor signature sync network traffic
Additional Resources
Troubleshooting
Common Issues
Deployment Failures
- Check pod logs for errors
- Verify configuration values
- Ensure network connectivity
Performance Issues
- Monitor resource usage
- Adjust resource limits
- Check for bottlenecks
Configuration Errors
- Validate YAML syntax
- Check required fields
- Verify environment-specific settings
Integration Problems
- Verify API compatibility
- Check dependency versions
- Review integration documentation
Getting Help
- Check official documentation
- Search GitHub issues
- Join community channels
- Review logs and metrics
Content generated automatically. Verify against official documentation before production use.
Examples
Basic Configuration
# Basic configuration example
apiVersion: v1
kind: ConfigMap
metadata:
name: {{project_name}}-config
namespace: default
data:
# Configuration goes here
config.yaml: |
# Base configuration
# Add your settings here
Kubernetes Deployment
# Kubernetes deployment for {{project_name}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{project_name}}
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: {{project_name}}
template:
metadata:
labels:
app: {{project_name}}
spec:
containers:
- name: {{project_name}}
image: {{project_name}}:latest
ports:
- containerPort: 8080
resources:
limits:
memory: "128Mi"
cpu: "500m"
Kubernetes Service
# Kubernetes service for {{project_name}}
apiVersion: v1
kind: Service
metadata:
name: {{project_name}}
namespace: default
spec:
selector:
app: {{project_name}}
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
When to Use
Use this skill when:
- Integrating a CNCF project into Kubernetes infrastructure — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster
- Designing cloud-native architecture — You are selecting and integrating CNCF tools to solve specific infrastructure challenges
- Resolving operational issues — A CNCF component is misbehaving, underperforming, or needs configuration changes
Core Workflow
Assess Requirements — Understand the use case, scale, integration needs, and existing infrastructure. Checkpoint: Document requirements, constraints, and success criteria.
Design Architecture — Plan component interactions, data flow, and deployment strategy using cloud-native best practices. Checkpoint: Verify the architecture addresses all requirements and follows CNCF conventions.
Implement & Configure — Create manifests, configurations, and deployment scripts. Include resource limits, health checks, and observability hooks. Checkpoint: Validate all YAML against schema and test in a staging environment.
Deploy & Monitor — Apply manifests to the cluster, verify component health, and confirm observability is working. Checkpoint: Confirm all pods/services are running, probes passing, and metrics/alerts configured.
Constraints
MUST DO
- Include at least one complete working YAML manifest example
- Note when content is auto-generated vs. manually verified
- Reference relevant CNCF project documentation
MUST NOT DO
- Deploy manifests without testing in a staging environment first
- Use deprecated API versions (e.g., apps/v1beta1)
- Omit resource limits and requests in Kubernetes manifests
1---2name: notary-project3description: "Notary Project in Content Trust & Security - cloud native architecture" patterns, pitfalls, and best practices4license: MIT5---678910# Notary Project in Cloud-Native Engineering1112**Category:** security 13**Status:** Sandbox 14**Stars:** 4,100 15**Last Updated:** 2026-04-22 16**Primary Language:** Go 17**Documentation:** [https://notaryproject.dev/](https://notaryproject.dev/) 1819---2021## Purpose and Use Cases2223### What Problem Does It Solve?2425The Notary Project addresses the critical need for content trust and supply chain security in container and software distribution. Without proper content verification, attackers can inject malicious code into container images, Helm charts, or other software artifacts that are then deployed to production environments. Notary provides a framework for signing and verifying artifact integrity and authenticity.2627### When to Use This Project2829Use Notary when you need:30- Sign and verify container images and artifacts31- Prevent tampering with software supply chain32- Ensure artifact authenticity from trusted publishers33- Implement keyless signing with Sigstore integration34- Manage signing keys securely across teams35- Verify artifact integrity before deployment3637### Key Use Cases3839- **Container Image Signing**: Sign Docker images before pushing to registry40- **Helm Chart Signing**: Verify Helm chart authenticity before deployment41- **Artifact Integrity**: Ensure artifacts haven't been modified in transit42- **Supply Chain Security**: Implement SLSA compliance with artifact signing43- **Key Management**: Securely manage signing keys with Keyless or KMS44- **CI/CD Integration**: Automate signing and verification in pipelines4546---4748## Architecture Design Patterns4950### Core Components5152- **Notary Server**: Centralized server for managing signing keys and metadata53- **Notary Client**: CLI tool for signing and verifying artifacts54- **TUF (The Update Framework)**: Framework for secure software updates55- **Delegated Signers**: Multiple signers with specific roles and authorities56- **Key Management**: Secure storage and management of signing keys57- **Signatures Storage**: Separate storage for signature metadata58- **Notary V2**: Modern implementation with Sigstore integration5960### Component Interactions61621. **Publisher → Notary Client**: Request to sign artifact632. **Notary Client → TUF**: Create metadata for artifact and signatures643. **TUF → Key Manager**: Access signing keys for signature generation654. **Notary Client → Registry**: Push artifact and signature metadata665. **Consumer → Registry**: Pull artifact and signature metadata676. **Consumer → Notary Client**: Verify artifact authenticity687. **Notary Client → Key Manager**: Verify signature with public keys6970### Data Flow Patterns71721. **Signing Flow**: Artifact → TUF metadata → Signature → Push to registry732. **Verification Flow**: Pull artifact + signatures → Verify signature → Verify TUF metadata → Trust743. **Key Rotation**: New keys → TUF metadata update → Push to registry → Clients update754. **Delegation Flow**: Delegated signer → Signature → TUF metadata → Verification7677### Design Principles7879- **Security First**: Defense in depth with multiple verification layers80- **Flexible Signing**: Support for multiple signing methods (keyless, KMS, traditional)81- **Decentralized Trust**: TUF allows for multiple delegatable signers82- **Standard Format**: Use standard TUF metadata format for interoperability83- **Key Rotation**: Support for key rotation without service disruption84- **Verifiable History**: Complete history of all artifact changes8586---8788## Integration Approaches8990### Integration with Other CNCF Projects9192- **Containerd**: Sign and verify container images via containerd93- **Docker**: Integrate Notary with Docker for image signing94- **Kubernetes**: Verify images in admission controllers95- **Helm**: Sign and verify Helm charts96- **Kaniko**: Sign images built with Kaniko97- **Tekton**: Automate signing in CI/CD pipelines98- **Grafana**: Verify artifact integrity in monitoring99100### API Patterns101102- **Registry API**: Extend OCI registry with signature storage103- **Notary CLI**: Command-line interface for signing and verification104- **REST API**: HTTP API for programmatic access105- **TUF Metadata API**: Access and update TUF metadata106107### Configuration Patterns108109- **Signing Keys**: Configure key storage (local, KMS, Keyless)110- **Delegation**: Set up delegated signer roles111- **Registry Integration**: Configure registry for signature storage112- **Verification Policies**: Define trust policies for verification113114### Extension Mechanisms115116- **Custom Key Management**: Support additional KMS providers117- **Custom Verifiers**: Implement custom verification logic118- **Webhooks**: Notify on signing events119- **Metrics Export**: Extend metrics with custom data120121---122123## Common Pitfalls and How to Avoid Them124125### Configuration Issues126127- **Key Storage**: Ensure signing keys are properly secured128- **TUF Metadata**: Keep TUF metadata synchronized with artifacts129- **Root Keys**: Secure root keys and establish key rotation procedures130- **Registry Integration**: Verify registry supports Notary signatures131- **Delegation Setup**: Properly configure delegated signer permissions132133### Performance Issues134135- **Signature Verification**: Optimize verification for large artifact sets136- **Metadata Refresh**: Balance metadata freshness with performance137- **Network Latency**: Minimize network calls for signature verification138139### Operational Challenges140141- **Key Recovery**: Implement secure key backup and recovery procedures142- **Metadata Sync**: Ensure consistent TUF metadata across clients143- **Version Compatibility**: Manage compatibility between Notary V1 and V2144- **Rolling Updates**: Plan for zero-downtime updates145146### Security Pitfalls147148- **Key Exposure**: Never store private keys in plaintext149- **Unverified Artifacts**: Always verify before deploying150- **Stale Metadata**: Regularly refresh TUF metadata151- **Insufficient Delegation**: Overly broad delegation permissions152153---154155## Coding Practices156157### Idiomatic Configuration158159- **Keyless Mode**: Use Sigstore for keyless signing160- **KMS Integration**: Use cloud KMS for enterprise key management161- **Delegation YAML**: Declarative delegation configuration162- **Verification Policies**: Define trust policies in YAML163164### API Usage Patterns165166- **Sign Command**: Sign artifacts via Notary CLI167- **Verify Command**: Verify artifact authenticity168- **TUF Metadata Query**: Query TUF metadata programmatically169- **Delegation Management**: Manage delegated signers170171### Observability Best Practices172173- **Signing Events**: Log signing events for audit174- **Verification Failures**: Monitor and alert on verification failures175- **Key Rotation**: Track key rotation events176- **TUF Sync**: Monitor TUF metadata synchronization177178### Development Workflow179180- **Local Testing**: Test signing and verification locally first181- **Staging Environment**: Verify signing workflow in staging182- **CI/CD Integration**: Automate signing in CI/CD pipelines183- **Rollback Plans**: Test recovery from key loss or corruption184185---186187## Fundamentals188189### Essential Concepts190191- **Artifact**: Software being signed (container image, Helm chart, binary)192- **Signature**: Cryptographic proof of artifact authenticity193- **TUF Metadata**: Signed metadata describing artifact versions and signatures194- **Delegation**: Authorizing specific signers for specific paths195- **Root Key**: Top-level key that signs all TUF metadata196- **Snapshot/Targets**: TUF metadata types for artifact management197- **Keyless**: Sigstore-based signing without key management198199### Terminology Glossary200201- **Artifact**: Software being distributed with Notary202- **Signature**: Cryptographic signature of artifact203- **TUF**: The Update Framework for secure software updates204- **Targets**: Metadata type for artifact listings205- **Snapshot**: Metadata for version tracking206- **Delegation**: Authorized signer with limited scope207- **Root Key**: Top-level key in TUF hierarchy208- **Keyless**: Sigstore-based signing approach209210### Data Models and Types211212- **Artifact**: Name, digest, signature, metadata213- **TUF Metadata**: Signed metadata for artifact versions214- **Signature**: Cryptographic signature and key information215- **Delegation**: Delegated signer configuration216- **Key**: Public/private key pair for signing217218### Lifecycle Management219220- **Signing Lifecycle**: Artifact → Sign → Push → Metadata updated221- **Verification Lifecycle**: Pull → Verify → Trust/Deny → Deploy222- **Key Lifecycle**: Generate → Distribute → Rotate → Compromise response223- **TUF Update**: Metadata refresh → Verification → Deployment224225### State Management226227- **Artifact State**: Signed, unsigned, verified, unverified228- **Key State**: Active, rotated, compromised, revoked229- **Metadata State**: Current, outdated, synced, desynced230231---232233## Scaling and Deployment Patterns234235### Horizontal Scaling236237- **Notary Server Scaling**: Scale for high-throughput signing operations238- **Signature Storage**: Scale storage for large artifact sets239- **Verification Load**: Scale verification servers for parallel checks240241### High Availability242243- **Server Redundancy**: Deploy multiple Notary servers244- **Database HA**: Use HA database for metadata storage245- **Key Backup**: Secure backup of all signing keys246- **Certificate Management**: Automated certificate renewal247248### Production Deployments249250- **Production Server**: Deploy Notary with HA configuration251- **Sigstore Integration**: Use Sigstore for keyless signing252- **KMS Integration**: Use enterprise KMS for key management253- **Monitoring**: Set up alerting for signing and verification issues254255### Upgrade Strategies256257- **Minor Version**: In-place upgrade with metadata compatibility258- **Major Version**: Plan migration with testing259- **TUF Version**: Handle TUF metadata version transitions260- **Rollback Plan**: Keep previous version available261262### Resource Management263264- **Storage**: Monitor metadata storage usage265- **Memory**: Configure memory for signature verification266- **CPU**: Balance signing and verification workload267- **Network**: Monitor signature sync network traffic268269---270271## Additional Resources272273- **Official Documentation:** [https://notaryproject.dev/docs/](https://notaryproject.dev/docs/)274- **GitHub Repository:** [github.com/notaryproject/notary](https://github.com/notaryproject/notary)275- **CNCF Project Page:** [cncf.io/projects/notary/](https://www.cncf.io/projects/notary/)276- **Community:** Check the GitHub repository for community channels277- **Versioning:** Refer to project's release notes for version-specific features278279---280281## Troubleshooting282283### Common Issues2842851. **Deployment Failures**286 - Check pod logs for errors287 - Verify configuration values288 - Ensure network connectivity2892902. **Performance Issues**291 - Monitor resource usage292 - Adjust resource limits293 - Check for bottlenecks2942953. **Configuration Errors**296 - Validate YAML syntax297 - Check required fields298 - Verify environment-specific settings2993004. **Integration Problems**301 - Verify API compatibility302 - Check dependency versions303 - Review integration documentation304305### Getting Help306307- Check official documentation308- Search GitHub issues309- Join community channels310- Review logs and metrics311*Content generated automatically. Verify against official documentation before production use.*312313## Examples314315### Basic Configuration316317318```yaml319# Basic configuration example320apiVersion: v1321kind: ConfigMap322metadata:323 name: {{project_name}}-config324 namespace: default325data:326 # Configuration goes here327 config.yaml: |328 # Base configuration329 # Add your settings here330```331332### Kubernetes Deployment333334335```yaml336# Kubernetes deployment for {{project_name}}337apiVersion: apps/v1338kind: Deployment339metadata:340 name: {{project_name}}341 namespace: default342spec:343 replicas: 1344 selector:345 matchLabels:346 app: {{project_name}}347 template:348 metadata:349 labels:350 app: {{project_name}}351 spec:352 containers:353 - name: {{project_name}}354 image: {{project_name}}:latest355 ports:356 - containerPort: 8080357 resources:358 limits:359 memory: "128Mi"360 cpu: "500m"361```362363### Kubernetes Service364365366```yaml367# Kubernetes service for {{project_name}}368apiVersion: v1369kind: Service370metadata:371 name: {{project_name}}372 namespace: default373spec:374 selector:375 app: {{project_name}}376 ports:377 - protocol: TCP378 port: 80379 targetPort: 8080380 type: ClusterIP381```382383---384385## When to Use386387Use this skill when:388389- **Integrating a CNCF project into Kubernetes infrastructure** — You need to configure, deploy, or troubleshoot a cloud-native tool within a cluster390- **Designing cloud-native architecture** — You are selecting and integrating CNCF tools to solve specific infrastructure challenges391- **Resolving operational issues** — A CNCF component is misbehaving, underperforming, or needs configuration changes392---393394## Core Workflow3953961. **Assess Requirements** — Understand the use case, scale, integration needs, and existing infrastructure. **Checkpoint:** Document requirements, constraints, and success criteria.3973982. **Design Architecture** — Plan component interactions, data flow, and deployment strategy using cloud-native best practices. **Checkpoint:** Verify the architecture addresses all requirements and follows CNCF conventions.3994003. **Implement & Configure** — Create manifests, configurations, and deployment scripts. Include resource limits, health checks, and observability hooks. **Checkpoint:** Validate all YAML against schema and test in a staging environment.4014024. **Deploy & Monitor** — Apply manifests to the cluster, verify component health, and confirm observability is working. **Checkpoint:** Confirm all pods/services are running, probes passing, and metrics/alerts configured.403404---405406## Constraints407408### MUST DO409- Include at least one complete working YAML manifest example410- Note when content is auto-generated vs. manually verified411- Reference relevant CNCF project documentation412413### MUST NOT DO414- Deploy manifests without testing in a staging environment first415- Use deprecated API versions (e.g., apps/v1beta1)416- Omit resource limits and requests in Kubernetes manifests