Maak een gedetailleerd geheimenbeheerraamwerk voor mijn organisatie
description
Door deze prompt te gebruiken, krijgt u een gestructureerde aanpak voor het beheren van geheimen die de beveiliging verbetert, naleving garandeert en toegangscontroles stroomlijnt die zijn afgestemd op uw specifieke omgeving.
prompt
try_prompt
Help me een uitgebreid geheimenbeheerraamwerk ontwikkelen dat is afgestemd op mijn organisatie. Mijn huidige infrastructuur omvat: {{infrastructuur_opzet}}. Ik wil dat dit raamwerk best pract ... more
generate_helper
...
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier is een uitgebreid geheimenbeheerraamwerk dat is afgestemd op jouw infrastructuur met AWS en Docker-containers, inclusief best practices voor het opslaan van geheimen, toegangscontrole en naleving:
1. Geheimenbeheer Strategie
a. Gebruik van AWS Secrets Manager of AWS Systems Manager Parameter Store
- AWS Secrets Manager biedt versleutelde opslag, automatische rotatie en gedetailleerde toegangscontrole.
- Parameter Store (met de Advanced-optie) biedt vergelijkbare functionaliteit en kan worden geïntegreerd met AWS KMS.
b. Voorkeur voor Secrets Manager vanwege rotatie en auditmogelijkheden.
2. Opslag van Geheimen
a. Versleuteling
- Gebruik altijd KMS voor het versleutelen van geheimen.
- Beperk toegang tot KMS-keys via strikte IAM-beleiden.
b. Geheimen Structuur
- Organiseer geheimen per omgeving (bijvoorbeeld dev, test, prod).
- Gebruik duidelijke naming-conventies, zoals /app/prod/db_password.
c. Automatisering
- Implementeer CI/CD-pijplijnen die geheimen ophalen en injecteren zonder handmatige tussenkomst.
3. Toegangscontrole
a. IAM-beleiden
- Beperk toegang tot geheimen tot minimale noodzakelijke rechten.
- Gebruik IAM-rollen voor EC2, ECS of andere services die de geheimen nodig hebben.
b. Geheimen in Docker-containers
- Gebruik AWS SDK of CLI om geheimen op runtime op te halen binnen containers.
- Overweeg gebruik van AWS App Mesh of sidecar containers voor geheimeninjectie.
c. Temporarige Toegang
- Gebruik tijdelijke beveiligingsreferenties via IAM-rollen en STS.
4. Integratie met Docker en AWS
a. Best practices
- Haal geheimen op tijdens containerstart via init-scripts of entrypoints.
- Gebruik environment variables of geheime files binnen containers.
b. Automatisering
- Gebruik tools zoals HashiCorp Vault of AWS SDKs in je CI/CD-pijplijn.
5. Nalevingsvereisten en Auditing
a. Logging
- Schakel CloudTrail in voor alle API-aanroepen met betrekking tot Secrets Manager en KMS.
- Log toegang tot geheimen en wijzigingen.
b. Monitoring
- Gebruik CloudWatch Metrics en Alarms voor verdachte activiteiten.
c. Beleid en Documentatie
- Documenteer procedures voor geheimenbeheer.
- Voer periodieke audits uit op toegang en gebruik.
6. Best Practices
a. Rotatie van geheimen
- Implementeer automatische rotatie voor database-wachtwoorden en API-keys.
b. Geen hardcoded geheimen
- Vermijd hardcoding in code of containerimages.
- Gebruik secrets management en injectie.
c. Beveiliging van toegang tot geheimen
- Gebruik multi-factor authenticatie (MFA) voor toegang tot beheerportalen.
- Beperk toegang via IP-whitelisting indien mogelijk.
7. Voorbeeld Implementatie
- Configuratie in AWS:
- Maak een secret in Secrets Manager: /app/prod/db_password
- Wijs een IAM-rol toe aan je ECS-task of EC2-instance met leesrechten op dat secret.
- Bij het starten van een container:
- Gebruik de AWS SDK of CLI om het geheim op te halen.
- Injecteer het in de container als environment variable of via een geheime file.
- Codevoorbeeld (bash):
```bash
SECRET=$(aws secretsmanager get-secret-value --secret-id /app/prod/db_password --query 'SecretString' --output text)
export DB_PASSWORD=$SECRET
```
8. Continue verbetering
- Evalueer regelmatig je geheimenbeheerproces.
- Blijf op de hoogte van AWS-updates en nieuwe beveiligingspraktijken.
Door deze richtlijnen te volgen, creëer je een veilig, compliant en efficiënt geheimenbeheer voor jouw AWS- en Docker-gebaseerde infrastructuur.
provider: deepseek
model: deepseek-chat
Zeker, hier is een uitgebreid geheimenbeheerraamwerk afgestemd op uw AWS- en Docker-infrastructuur:
## 1. Architectuur en Principes
### Basisprincipes:
- **Zero Trust**: Altijd verifiëren, nooit impliciet vertrouwen
- **Principle of Least Privilege**: Minimale rechten voor elke component
- **Scheiding van taken**: Ontwikkeling, implementatie en beheer gescheiden
- **Auditlogging**: Alle toegang wordt gelogd en gemonitord
## 2. Gelaagde Geheimen Architectuur
### A. AWS Secrets Manager als Centrale Opslag
```yaml
# Voorbeeld secret in AWS Secrets Manager
secret_name: "prod/database/payment-db"
secret_value:
username: "app_user"
password: "encrypted_password"
connection_string: "encrypted_connection"
rotation_schedule: 30_days
```
### B. Tiered Secrets Classificatie
```python
SECRET_TIERS = {
"tier0": ["master-keys", "root-certificates"],
"tier1": ["database-passwords", "api-keys"],
"tier2": ["service-tokens", "config-parameters"]
}
```
## 3. Implementatie Strategieën
### A. Container Geheimen Injectie
```dockerfile
# Dockerfile voor veilige secret handling
FROM amazonlinux:2
# Installeer AWS CLI voor secret retrieval
RUN yum update -y && \
yum install -y aws-cli jq
# Application entrypoint met secret injection
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
```
```bash
#!/bin/bash
# entrypoint.sh - Veilige secret retrieval
# Haal secrets op bij container start
export DB_PASSWORD=$(aws secretsmanager get-secret-value \
--secret-id prod/database/password \
--query SecretString --output text | jq -r .password)
# Start applicatie met geïnjecteerde secrets
exec /app/start-app.sh
```
### B. IAM Roles voor Service Accounts
```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws:secretsmanager:eu-west-1:123456789:secret:prod/database/*"
}
]
}
```
## 4. Toegangscontrole Matrix
### A. RBAC Implementatie
```yaml
# IAM Roles structuur
roles:
developer:
permissions: ["secretsmanager:ListSecrets"]
resources: ["dev/*"]
deployment-bot:
permissions: ["secretsmanager:GetSecretValue"]
resources: ["staging/*", "prod/*"]
security-admin:
permissions: ["secretsmanager:*"]
resources: ["*"]
```
### B. Time-bound Toegang
```python
# Voorbeeld temporary credentials
import boto3
from datetime import datetime, timedelta
def get_temporary_access(role_arn, duration_seconds=3600):
sts_client = boto3.client('sts')
response = sts_client.assume_role(
RoleArn=role_arn,
RoleSessionName='temp-access',
DurationSeconds=duration_seconds
)
return response['Credentials']
```
## 5. Automatische Secret Rotatie
### A. Database Password Rotatie
```python
import boto3
import psycopg2
def rotate_database_secret(secret_arn):
secrets_client = boto3.client('secretsmanager')
# Genereer nieuw wachtwoord
new_password = generate_secure_password()
# Update database
update_database_password(new_password)
# Update secret in AWS Secrets Manager
secrets_client.update_secret(
SecretId=secret_arn,
SecretString=json.dumps({'password': new_password})
)
```
## 6. Monitoring en Audit
### A. CloudWatch Logging
```python
import boto3
import json
def log_secret_access(secret_name, user_identity, action):
cloudwatch = boto3.client('logs')
log_event = {
'timestamp': datetime.utcnow().isoformat(),
'secretName': secret_name,
'userIdentity': user_identity,
'action': action,
'sourceIP': get_source_ip()
}
cloudwatch.put_log_events(
logGroupName='/aws/secrets/access',
logStreamName=secret_name,
logEvents=[{'timestamp': int(time.time() * 1000), 'message': json.dumps(log_event)}]
)
```
### B. Security Hub Integratie
```yaml
# security-hub-config.yml
controls:
- name: "SecretsManager.1"
description: "Geheimen moeten automatisch worden geroteerd"
resource_types: ["AWS::SecretsManager::Secret"]
compliance: ["NEN-ISO/IEC 27001:2017", "GDPR"]
```
## 7. Naleving en Certificering
### A. GDPR Compliance Maatregelen
- **Data Minimization**: Alleen noodzakelijke secrets opslaan
- **Right to Erasure**: Secrets kunnen worden verwijderd
- **Encryption at Rest**: AES-256 encryptie
- **Access Logging**: Alle toegang wordt gelogd
### B. ISO 27001 Controls
```yaml
security_controls:
A.9.2.1: "Toegangsrechten voor gebruikers"
A.9.4.3: "Password management system"
A.12.4.1: "Event logging"
A.13.2.1: "Information transfer policies"
```
## 8. Disaster Recovery Plan
### A. Backup Strategie
```python
def backup_secrets():
secrets_client = boto3.client('secretsmanager')
# Maak backup van alle secrets
paginator = secrets_client.get_paginator('list_secrets')
for page in paginator.paginate():
for secret in page['SecretList']:
create_secret_backup(secret['ARN'])
```
### B. Recovery Procedure
1. **Identificatie**: Welke secrets zijn aangetast
2. **Isolatie**: Toegang blokkeren tot aangetaste secrets
3. **Rotatie**: Nieuwe secrets genereren
4. **Update**: Applicaties bijwerken met nieuwe secrets
5. **Validatie**: Controleren of alles werkt
## 9. Implementatie Checklist
- [ ] AWS Secrets Manager geïmplementeerd
- [ ] IAM roles geconfigureerd voor least privilege
- [ ] Automatische rotatie ingeschakeld
- [ ] Audit logging geactiveerd
- [ ] Noodprocedures gedocumenteerd
- [ ] Team training uitgevoerd
- [ ] Periodieke security reviews gepland
## 10. Best Practices voor Ontwikkelaars
### A. Code Guidelines
```python
# GOED - Gebruik environment variables
import os
db_password = os.environ['DB_PASSWORD']
# SLECHT - Hardcoded secrets
db_password = "my_secret_password"
```
### B. Development Workflow
1. **Lokaal ontwikkelen**: Gebruik mock secrets
2. **Testen**: Gebruik test secrets in geïsoleerde omgeving
3. **Productie**: Automatische secret injection via CI/CD
Dit raamwerk biedt een complete foundation voor veilig geheimbeheer in uw AWS Docker-omgeving. Implementeer gefaseerd en voer regelmatig security audits uit.

