adpa-enterprise-framework-automation
Version:
Modular, standards-compliant Node.js/TypeScript automation framework for enterprise requirements, project, and data management. Provides CLI and API for BABOK v3, PMBOK 7th Edition, and DMBOK 2.0 (in progress). Production-ready Express.js API with TypeSpe
539 lines (453 loc) • 16.3 kB
Markdown
# Free Tier Security Implementation Guide
## 🛡️ Maximum Security Configuration for Azure Free Account
This guide provides step-by-step implementation of enterprise-grade security practices within Azure Free Tier limitations.
## Phase 1: Identity & Access Security (Day 1)
### 1.1 Azure Active Directory Configuration
```powershell
# After creating your free Azure account, immediately configure basic security
# Enable MFA for your account (do this first!)
# Portal: Azure AD > Users > Multi-Factor Authentication
# Select your user > Enable
# Create additional admin account with MFA
az ad user create \
--display-name "Admin-Backup" \
--password "TempPassword123!" \
--user-principal-name "admin-backup@yourdomain.onmicrosoft.com" \
--force-change-password-next-login true
# Assign Global Administrator role (use sparingly)
az role assignment create \
--assignee "admin-backup@yourdomain.onmicrosoft.com" \
--role "Global Administrator"
```
### 1.2 Strong Password Policy (Manual Enforcement)
```yaml
Password Requirements (Document and Enforce):
- Minimum 14 characters
- Mix of uppercase, lowercase, numbers, symbols
- No dictionary words
- No personal information
- Change every 90 days for admin accounts
- No password reuse (last 12 passwords)
```
### 1.3 Privileged Access Management
```powershell
# Create custom roles for least privilege access
az role definition create --role-definition '{
"Name": "API Center Manager",
"Description": "Can manage API Center resources only",
"Actions": [
"Microsoft.ApiCenter/*",
"Microsoft.Resources/subscriptions/resourceGroups/read"
],
"NotActions": [],
"AssignableScopes": ["/subscriptions/YOUR-SUBSCRIPTION-ID"]
}'
# Assign role to specific users instead of broad permissions
az role assignment create \
--assignee "user@yourdomain.com" \
--role "API Center Manager" \
--scope "/subscriptions/YOUR-SUBSCRIPTION-ID/resourceGroups/rg-api-center"
```
## Phase 2: Network Security (Day 2)
### 2.1 Network Security Groups (NSGs)
```json
{
"name": "nsg-api-center-strict",
"location": "West Europe",
"properties": {
"securityRules": [
{
"name": "AllowHTTPS",
"properties": {
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "443",
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 1000,
"direction": "Inbound"
}
},
{
"name": "AllowAdminSSH",
"properties": {
"protocol": "Tcp",
"sourcePortRange": "*",
"destinationPortRange": "22",
"sourceAddressPrefix": "YOUR-ADMIN-IP/32",
"destinationAddressPrefix": "*",
"access": "Allow",
"priority": 1100,
"direction": "Inbound"
}
},
{
"name": "DenyAllInbound",
"properties": {
"protocol": "*",
"sourcePortRange": "*",
"destinationPortRange": "*",
"sourceAddressPrefix": "*",
"destinationAddressPrefix": "*",
"access": "Deny",
"priority": 4096,
"direction": "Inbound"
}
}
]
}
}
```
### 2.2 IP Allowlisting Strategy
```powershell
# Create NSG with strict IP allowlisting
az network nsg create \
--resource-group rg-api-center \
--name nsg-api-center-strict \
--location "West Europe"
# Allow only your office/home IP for admin access
az network nsg rule create \
--resource-group rg-api-center \
--nsg-name nsg-api-center-strict \
--name AllowAdminAccess \
--protocol Tcp \
--priority 1000 \
--destination-port-range 443 \
--source-address-prefixes "YOUR-IP/32" "OFFICE-IP/32" \
--access Allow
```
## Phase 3: Data Protection (Day 3)
### 3.1 Azure Key Vault Setup (Free Tier)
```powershell
# Create Key Vault with maximum security for free tier
az keyvault create \
--name "kv-api-center-$(Get-Random)" \
--resource-group rg-api-center \
--location "West Europe" \
--sku standard \
--enabled-for-disk-encryption true \
--enabled-for-deployment false \
--enabled-for-template-deployment false \
--enable-soft-delete true \
--retention-days 90
# Set access policy with minimal permissions
az keyvault set-policy \
--name "kv-api-center-123456" \
--upn "your-email@domain.com" \
--secret-permissions get list set delete \
--key-permissions get list create delete \
--certificate-permissions get list create delete
```
### 3.2 Storage Account Security
```powershell
# Create storage account with maximum security
az storage account create \
--name "stgapicenter$(Get-Random)" \
--resource-group rg-api-center \
--location "West Europe" \
--sku Standard_LRS \
--kind StorageV2 \
--access-tier Hot \
--https-only true \
--min-tls-version TLS1_2 \
--allow-blob-public-access false \
--default-action Deny
# Enable storage encryption (default in Azure)
az storage account update \
--name "stgapicenter123456" \
--resource-group rg-api-center \
--encryption-services blob file
```
### 3.3 Database Security (if using Azure SQL)
```sql
-- SQL Database security configuration
ALTER DATABASE [your-database] SET ENCRYPTION ON;
-- Enable Transparent Data Encryption
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE [YourServerCertificate];
-- Enable Dynamic Data Masking for sensitive columns
ALTER TABLE Customers
ALTER COLUMN Email ADD MASKED WITH (FUNCTION = 'email()');
ALTER TABLE Customers
ALTER COLUMN Phone ADD MASKED WITH (FUNCTION = 'partial(1,"XXX-XXX-",4)');
```
## Phase 4: Monitoring & Alerting (Day 4)
### 4.1 Azure Monitor Configuration
```powershell
# Create Log Analytics workspace (500MB free per day)
az monitor log-analytics workspace create \
--resource-group rg-api-center \
--workspace-name law-api-center \
--location "West Europe" \
--sku Free
# Enable diagnostic settings for key resources
az monitor diagnostic-settings create \
--name "api-center-diagnostics" \
--resource "/subscriptions/YOUR-SUB/resourceGroups/rg-api-center/providers/Microsoft.ApiCenter/services/api-center-name" \
--workspace "/subscriptions/YOUR-SUB/resourceGroups/rg-api-center/providers/Microsoft.OperationalInsights/workspaces/law-api-center" \
--logs '[{"category":"ApiCenterLogs","enabled":true}]' \
--metrics '[{"category":"AllMetrics","enabled":true}]'
```
### 4.2 Security Alerts (Free Tier)
```powershell
# Create action group for alerts
az monitor action-group create \
--name "security-alerts" \
--resource-group rg-api-center \
--short-name "SecAlert" \
--email-receiver name="admin" email-address="your-email@domain.com"
# Create alert for failed login attempts
az monitor metrics alert create \
--name "Failed-Logins" \
--resource-group rg-api-center \
--scopes "/subscriptions/YOUR-SUB/resourceGroups/rg-api-center" \
--condition "count 'Sign-in activity' > 5" \
--window-size 5m \
--evaluation-frequency 1m \
--action "security-alerts" \
--description "Alert on multiple failed login attempts"
```
### 4.3 Cost Monitoring (Critical for Free Tier)
```powershell
# Create budget alert to prevent unexpected charges
az consumption budget create \
--budget-name "monthly-budget" \
--amount 10 \
--time-grain Monthly \
--start-date "2025-07-01" \
--end-date "2025-12-31" \
--resource-group rg-api-center \
--notifications '[{
"enabled": true,
"operator": "GreaterThan",
"threshold": 80,
"contactEmails": ["your-email@domain.com"],
"contactRoles": ["Owner"]
}]'
```
## Phase 5: Backup & Recovery (Day 5)
### 5.1 Automated Backup Strategy
```powershell
# Create Recovery Services Vault
az backup vault create \
--resource-group rg-api-center \
--name rsv-api-center \
--location "West Europe"
# Configure backup for important data
az backup policy create \
--resource-group rg-api-center \
--vault-name rsv-api-center \
--name "DailyBackupPolicy" \
--backup-management-type AzureStorage \
--policy '{
"schedulePolicy": {
"schedulePolicyType": "SimpleSchedulePolicy",
"scheduleRunFrequency": "Daily",
"scheduleRunTimes": ["2025-01-01T02:00:00.000Z"]
},
"retentionPolicy": {
"retentionPolicyType": "LongTermRetentionPolicy",
"dailySchedule": {
"retentionTimes": ["2025-01-01T02:00:00.000Z"],
"retentionDuration": {
"count": 30,
"durationType": "Days"
}
}
}
}'
```
### 5.2 Configuration Backup
```powershell
# Export ARM templates for infrastructure as code backup
az group export \
--resource-group rg-api-center \
--output-format json \
> backup-infrastructure-$(Get-Date -Format "yyyyMMdd").json
# Backup Key Vault secrets (encrypted)
az keyvault secret list \
--vault-name kv-api-center-123456 \
--query "[].{name:name,id:id}" \
--output json > backup-secrets-list-$(Get-Date -Format "yyyyMMdd").json
```
## Phase 6: Compliance & Governance (Day 6-7)
### 6.1 Azure Policy Implementation
```json
{
"if": {
"field": "type",
"equals": "Microsoft.Storage/storageAccounts"
},
"then": {
"effect": "deny",
"details": {
"reason": "Storage accounts must have HTTPS-only enabled"
}
},
"condition": {
"field": "Microsoft.Storage/storageAccounts/supportsHttpsTrafficOnly",
"equals": "false"
}
}
```
### 6.2 Resource Tagging Strategy
```powershell
# Apply mandatory tags to all resources
az resource tag \
--resource-group rg-api-center \
--name "api-center-service" \
--resource-type "Microsoft.ApiCenter/services" \
--tags Environment=Production Owner=admin@company.com CostCenter=IT Classification=Internal
# Create policy to enforce tagging
az policy definition create \
--name "require-tags" \
--display-name "Require specific tags" \
--description "Requires specific tags on all resources" \
--rules '{
"if": {
"anyOf": [
{"field": "tags[Environment]", "exists": "false"},
{"field": "tags[Owner]", "exists": "false"},
{"field": "tags[Classification]", "exists": "false"}
]
},
"then": {
"effect": "deny"
}
}'
```
## Phase 7: Operational Security Procedures
### 7.1 Daily Security Checklist
```yaml
Daily Tasks (5 minutes):
- [ ] Check Azure Security Center recommendations
- [ ] Review activity logs for suspicious activities
- [ ] Verify backup completion status
- [ ] Check cost consumption (stay within free limits)
Weekly Tasks (30 minutes):
- [ ] Review user access and permissions
- [ ] Check for software updates and patches
- [ ] Review security policies and procedures
- [ ] Audit resource configurations
Monthly Tasks (2 hours):
- [ ] Complete security assessment
- [ ] Review and update incident response plan
- [ ] Conduct backup restore test
- [ ] Review and update security documentation
```
### 7.2 Incident Response Plan (Free Tier)
```yaml
Security Incident Response:
Level 1 (Low Impact):
- Response Time: 4 hours
- Actions: Log incident, assess impact, implement fix
- Escalation: If not resolved in 8 hours
Level 2 (Medium Impact):
- Response Time: 1 hour
- Actions: Immediate containment, assess scope, notify stakeholders
- Escalation: If business operations affected
Level 3 (High Impact):
- Response Time: 15 minutes
- Actions: Emergency response, disable compromised accounts, notify authorities
- Escalation: Immediate management notification
Contact Information:
- Primary: your-email@domain.com
- Secondary: backup-admin@domain.com
- Emergency: +1-XXX-XXX-XXXX
```
## Phase 8: Third-Party Security Enhancements (Free)
### 8.1 Free Security Tools Integration
```yaml
Cloudflare (Free Tier):
- DDoS protection
- Web Application Firewall
- SSL/TLS encryption
Setup: Point your domain to Cloudflare nameservers
Let's Encrypt (Free):
- SSL certificates
- Automated renewal
Setup: Use certbot or Azure App Service built-in
OWASP ZAP (Free):
- Security testing
- Vulnerability scanning
Setup: Download and configure for your APIs
HaveIBeenPwned API (Free):
- Password breach monitoring
- Email compromise detection
Setup: Integrate with your user management system
```
### 8.2 Open Source Monitoring Stack
```yaml
ELK Stack (Self-hosted):
Components:
- Elasticsearch: Log storage and search
- Logstash: Log processing
- Kibana: Visualization and dashboards
Setup:
- Deploy on Azure Container Instances (free tier)
- Configure log forwarding from Azure Monitor
- Create security dashboards and alerts
Prometheus + Grafana:
Components:
- Prometheus: Metrics collection
- Grafana: Visualization
- AlertManager: Alert routing
Setup:
- Deploy on Azure Container Instances
- Configure Azure Monitor integration
- Set up alerting rules for security events
```
## 🎯 Success Metrics
### Security KPIs (Free Tier)
```yaml
Identity Security:
- MFA adoption rate: 100%
- Privileged access reviews: Monthly
- Password policy compliance: 100%
- Failed login attempts: < 5 per day
Network Security:
- NSG rule compliance: 100%
- Unauthorized access attempts: 0
- Network segmentation: Implemented
- SSL/TLS usage: 100%
Data Protection:
- Encryption at rest: 100%
- Encryption in transit: 100%
- Backup success rate: 100%
- Key rotation: Quarterly
Monitoring:
- Alert response time: < 1 hour
- Log analysis coverage: Daily
- Security review completion: 100%
- Incident documentation: 100%
```
## 📋 Implementation Timeline
| Phase | Duration | Critical Path | Dependencies |
|-------|----------|---------------|--------------|
| **Phase 1**: Identity Setup | Day 1 | Azure AD + MFA | Azure account created |
| **Phase 2**: Network Security | Day 2 | NSG configuration | Resource groups created |
| **Phase 3**: Data Protection | Day 3 | Key Vault + encryption | Network security complete |
| **Phase 4**: Monitoring | Day 4 | Alerts + logging | Resources deployed |
| **Phase 5**: Backup | Day 5 | Recovery procedures | Data protection complete |
| **Phase 6**: Compliance | Day 6-7 | Policies + governance | All phases complete |
| **Phase 7**: Operations | Day 8+ | Ongoing procedures | Framework established |
## 💡 Pro Tips for Free Tier Security
### Maximize Your Free Quotas
- **Log Analytics**: 500MB/day - focus on security logs only
- **Storage**: Use lifecycle policies to manage costs
- **Compute**: Use B1s instances for minimal workloads
- **Monitoring**: Consolidate alerts to reduce noise
### Cost Optimization
- **Tag everything** for cost tracking
- **Set up billing alerts** at $5, $10, $15 thresholds
- **Use Azure Advisor** recommendations
- **Monitor daily** to avoid surprises
### Security Best Practices
- **Document everything** - compensate for limited tooling with good documentation
- **Regular reviews** - manual processes are more critical in free tier
- **Community support** - leverage free community resources
- **Stay updated** - follow Azure security blogs and updates
---
**Result**: Enterprise-grade security baseline achieved within Azure Free Tier constraints, suitable for revenue-generating operations with documented acceptable risk levels.