This document outlines critical security considerations when implementing Azure DevOps Server 2020 with Azure Application Proxy, including best practices, potential risks, and mitigation strategies.
- Requirement: Enable MFA for all external access
- Implementation: Use conditional access policies targeting the Application Proxy app
- Best Practice: Require MFA for users accessing from external networks
- Exception Handling: Create break-glass accounts with documented procedures
{
"displayName": "Azure DevOps External Access Policy",
"state": "enabled",
"conditions": {
"users": {
"includeGroups": ["DevOps-External-Users"]
},
"applications": {
"includeApplications": ["Azure-DevOps-App-Proxy"]
},
"locations": {
"excludeLocations": ["Corporate-Network"]
}
},
"grantControls": {
"builtInControls": ["mfa", "compliantDevice"],
"operator": "AND"
}
}- Use PIM for Azure DevOps administrators
- Implement just-in-time access for sensitive operations
- Regular access reviews for all users
- Emergency access procedures
- Grant minimum necessary permissions
- Regular access reviews and cleanup
- Separate development, staging, and production access
- Document role assignments and justifications
Define custom roles for specific scenarios:
- External Developer: Limited to specific projects
- External Auditor: Read-only access to compliance data
- Partner Access: Restricted to collaborative projects
- Place Application Proxy connectors in DMZ
- Separate network segment for connectors
- Minimal required connectivity to internal resources
- Regular network topology reviews
Outbound Rules (Connector to Azure):
Destination: *.msappproxy.net
Port: 443 (HTTPS)
Protocol: TCP
Destination: *.servicebus.windows.net
Port: 443 (HTTPS)
Protocol: TCP
Inbound Rules (Connector to DevOps Server):
Source: Connector Server IP
Destination: DevOps Server
Port: 443/8080
Protocol: TCP
- Use certificates from trusted Certificate Authorities
- Implement certificate pinning where possible
- Automated certificate renewal processes
- Regular certificate expiry monitoring
- Minimum TLS 1.2 (disable older versions)
- Strong cipher suites only
- Perfect Forward Secrecy (PFS)
- HTTP Strict Transport Security (HSTS)
<!-- IIS Configuration -->
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Strict-Transport-Security" value="max-age=31536000; includeSubDomains; preload" />
</customHeaders>
</httpProtocol>
</system.webServer>- Regular security patch management
- Automated update deployment where possible
- Testing updates in non-production environments
- Emergency patching procedures
- Disable unnecessary features and services
- Secure default configurations
- Regular configuration reviews
- Change management for security settings
- Validate all external inputs
- Implement proper encoding/escaping
- Use parameterized queries
- Regular security code reviews
- Secure session configuration
- Appropriate session timeouts
- Session invalidation on logout
- Protection against session fixation
Classify data based on sensitivity:
- Public: Documentation, public repositories
- Internal: Internal projects, non-sensitive code
- Confidential: Proprietary code, customer data
- Restricted: Security-related, compliance data
- Implement DLP policies in Azure
- Monitor for sensitive data exposure
- Block unauthorized data transfers
- Regular DLP policy reviews
- Enable Transparent Data Encryption (TDE) for SQL Server
- Encrypt file system storage
- Secure backup encryption
- Key management best practices
- End-to-end encryption (client to server)
- Certificate validation
- Secure protocol configuration
- Monitor for protocol downgrade attacks
Monitor these critical logs:
- Application Proxy connector logs
- Azure DevOps Server IIS logs
- Windows Security Event logs
- Azure AD sign-in logs
- Conditional access policy triggers
# Example: Forward logs to Azure Sentinel
Install-Module AzSentinel
$WorkspaceId = "your-workspace-id"
$SharedKey = "your-shared-key"
# Configure log forwarding
Set-AzSentinelDataConnector -WorkspaceId $WorkspaceId -ConnectorType "SecurityEvents"Set up alerts for:
- Failed authentication attempts (>5 in 10 minutes)
- Unusual access patterns
- Privilege escalation attempts
- Configuration changes
- Certificate expiry warnings
- Security Lead: Overall incident coordination
- System Administrator: Technical remediation
- Network Administrator: Network-level responses
- Legal/Compliance: Regulatory requirements
- Detection: Automated alerts and manual reporting
- Analysis: Determine scope and impact
- Containment: Isolate affected systems
- Eradication: Remove threats and vulnerabilities
- Recovery: Restore normal operations
- Lessons Learned: Post-incident review
- Data processing agreements
- Right to erasure implementation
- Data portability features
- Privacy by design principles
- Change management controls
- Audit trail requirements
- Segregation of duties
- Financial reporting controls
- ISO 27001 alignment
- NIST Cybersecurity Framework
- CIS Controls implementation
- Regular compliance assessments
- Comprehensive audit logging
- Log retention policies
- Regular access reviews
- Third-party security assessments
- Application Proxy settings
- Azure DevOps Server configuration
- SSL certificates and keys
- Custom security configurations
- RTO/RPO requirements definition
- Alternate site configuration
- Failover procedures testing
- Communication plans
- Multiple Application Proxy connectors
- Load balancer configuration
- Database clustering
- Geographic distribution considerations
- Automated vulnerability scanning
- Regular penetration testing
- Code security reviews
- Dependency vulnerability checks
- Monthly: Automated vulnerability scans
- Quarterly: Manual security reviews
- Annually: Comprehensive penetration testing
- Ad-hoc: After major changes
- External attack simulation
- Insider threat scenarios
- Social engineering tests
- Physical security assessments
- Phishing awareness training
- Password security best practices
- Device security requirements
- Incident reporting procedures
- Security configuration management
- Incident response procedures
- Threat intelligence awareness
- Regular security updates
- Credential compromise: Implement MFA and monitoring
- Man-in-the-middle attacks: Strong TLS configuration
- Data exfiltration: DLP and monitoring
- Insider threats: Access controls and monitoring
| Risk | Likelihood | Impact | Mitigation |
|---|---|---|---|
| Credential Compromise | Medium | High | MFA + Monitoring |
| Certificate Expiry | Low | Medium | Automated Renewal |
| DDoS Attack | Medium | Medium | Azure DDoS Protection |
| Data Breach | Low | High | Encryption + DLP |
Security is an ongoing process requiring regular attention and updates. This security framework should be:
- Reviewed quarterly
- Updated after security incidents
- Aligned with organizational security policies
- Tested regularly through security assessments
For additional security guidance, consult:
- Microsoft Security Documentation
- Azure Security Center recommendations
- Industry security frameworks
- Organizational security policies