Ontwerp en implementeer Terraform modules voor compliance en governance
description
Met deze prompt kan de gebruiker Terraform modules ontwikkelen die voldoen aan strenge compliance- en governance-vereisten, waardoor risico's worden beperkt en audits soepeler verlopen. Het helpt bij het integreren van beleid en toegangscontrole direct in de infrastructuurcode, wat zorgt voor consistente en veilige implementaties, beter dan generieke optimalisatieadviezen.
prompt
Help me bij het ontwerpen en implementeren van Terraform modules die voldoen aan mijn compliance- en governance-eisen. Mijn branche en relevante regelgeving: <voer uw branche en relevante regelgeving ...
try_prompt
generate_helper
disclaimerOnPageApi
tags
ai_answers
provider: openai
model: gpt-4.1-nano
Natuurlijk! Hier zijn best practices voor het ontwerpen en implementeren van Terraform-modules die voldoen aan HIPAA-vereisten en gericht zijn op data-encryptie, beleid, auditing en toegangscontrole:
1. **Gebruik van veilige providers en resources**
- Kies providers die encryptie ondersteunen (bijvoorbeeld AWS, Azure, GCP).
- Configureer resources met encryptie-instellingen, zoals S3-buckets met server-side encryptie, Azure Blob Storage met encryptie, of database-encryptie.
2. **Implementeer herbruikbare modules**
- Ontwikkel Terraform-modules die encryptie en beveiligingsinstellingen standaard bevatten.
- Documenteer duidelijk de beveiligingsopties en eisen binnen de modules.
3. **Beveiligingsbeleid en Governance integreren**
- Gebruik beleids- en governance-tools zoals Terraform Sentinel of Open Policy Agent (OPA) om beleid af te dwingen voordat infrastructuur wordt uitgerold.
- Definieer policies die encryptie verplicht stellen voor alle opslag- en transmissie-gegevens.
4. **Auditing en Logging**
- Configureer resources voor uitgebreide logging (bijvoorbeeld CloudTrail voor AWS, Activity Log voor Azure).
- Maak gebruik van Terraform modules die log- en audit-instellingen automatisch configureren.
- Zorg dat logs worden opgeslagen op beveiligde en gecentraliseerde locaties.
5. **Toegangscontrole en Identity & Access Management (IAM)**
- Beperk toegang tot infrastructuur via IAM-rollen en -beleid volgens het principe van minste privilege.
- Gebruik Terraform om IAM-beleidsregels te beheren en te automatiseren.
- Verdeel toegang op basis van rollen en vereist multi-factor authenticatie waar mogelijk.
6. **Versiebeheer en Code Reviews**
- Houd alle Terraform-code onder versiebeheer (bijvoorbeeld Git).
- Voer code reviews uit om naleving van beveiligings- en compliance-eisen te waarborgen.
7. **Automatisering en CI/CD**
- Automatiseer deployment met CI/CD pipelines die compliance-checks uitvoeren voorafgaand aan uitrol.
- Integreer tools voor statische code-analyse en beleidshandhaving.
8. **Documentatie en training**
- Documenteer alle beveiligings- en compliance-instellingen en -procedures.
- Train teamleden op het belang van encryptie, toegangscontrole en auditing.
**Samenvatting:**
Gebruik herbruikbare Terraform-modules met standaard encryptie-instellingen, integreer beleid en governance via Sentinel of OPA, configureer uitgebreide logging en audit trails, beperk toegang via IAM, en automatiseer compliance-controles binnen je CI/CD-processen. Op deze manier zorg je dat je infrastructuur in de gezondheidszorg voldoet aan HIPAA-regelgeving en data beveiligd is.
provider: deepseek
model: deepseek-chat
Absoluut. Hier is een uitgebreide gids in het Nederlands voor het ontwerpen en implementeren van HIPAA-compliant Terraform modules voor de gezondheidszorgsector, met focus op data-encryptie, beleid en toegangscontrole.
---
### **Kernprincipes voor HIPAA-compliant Terraform Ontwerp**
1. **"Infrastructure as Code" is "Compliance as Code":** Uw Terraform-code is uw primaire controlemechanisme. Beleid en guardrails moeten *proactief* in de code worden ingebakken, niet reactief gecontroleerd.
2. **Minimalisatie & Least Privilege:** Grant alleen de absoluut noodzakelijke rechten aan resources en gebruikers.
3. **Alles Geëncrypteerd, Altijd:** Versleuteling in rust (*encryption at rest*) en tijdens transport (*encryption in transit*) is niet-onderhandelbaar.
4. **Auditlogboek is Heilig:** Alle toegang en wijzigingen moeten traceerbaar en onveranderlijk worden gelogged.
---
### **1. Module-ontwerp voor HIPAA (met focus op encryptie)**
Gebruik een modulaire, composable structuur om consistentie af te dwingen.
**Voorbeeld module-structuur:**
```
modules/
└── hipaa-compliant/
├── s3-bucket/ # Voor bv. patiëntrapporten
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
├── rds-instance/ # Voor PHI (Protected Health Information) databases
│ ├── main.tf
│ ├── variables.tf
│ └── outputs.tf
├── ebs-volume/ # Voor geëncrypteerde storage
│ └── ...
└── README.md # Documenteer compliance-aannames!
```
**Specifieke Implementatie in Modules (`main.tf`):**
* **AWS S3 Bucket (voor bv. medische beeldvorming):**
```hcl
# modules/hipaa-compliant/s3-bucket/main.tf
resource "aws_s3_bucket" "this" {
bucket = var.bucket_name
# Verplicht: Blokkeer alle publieke toegang
tags = var.tags
}
resource "aws_s3_bucket_public_access_block" "this" {
bucket = aws_s3_bucket.this.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
# VERPLICHT: Encryptie at rest met AWS KMS afdwingen
resource "aws_s3_bucket_server_side_encryption_configuration" "this" {
bucket = aws_s3_bucket.this.id
rule {
apply_server_side_encryption_by_default {
kms_master_key_id = var.kms_key_arn # Gebruik een specifieke HIPAA-compliant KMS key
sse_algorithm = "aws:kms"
}
bucket_key_enabled = true
}
}
# VERPLICHT: Gedetailleerde logging inschakelen
resource "aws_s3_bucket_logging" "this" {
bucket = aws_s3_bucket.this.id
target_bucket = var.logging_bucket_id
target_prefix = "logs/${var.bucket_name}/"
}
# VERPLICHT: Lifecycle policy voor audit logs
resource "aws_s3_bucket_lifecycle_configuration" "log_bucket" {
bucket = aws_s3_bucket.this.id
rule {
id = "audit-log-retention"
status = "Enabled"
transition {
days = 30
storage_class = "GLACIER_IR"
}
expiration {
days = 365 # Bewaar auditlogs minimaal 6 jaar (HIPAA retentie)
}
}
}
```
* **AWS RDS Instance (voor PHI-databases):**
```hcl
# modules/hipaa-compliant/rds-instance/main.tf
resource "aws_db_instance" "this" {
identifier = var.identifier
engine = var.engine
instance_class = var.instance_class
allocated_storage = var.allocated_storage
# VERPLICHT: Encryptie at rest inschakelen
storage_encrypted = true
kms_key_id = var.kms_key_arn
# VERPLICHT: Geen publieke toegang
publicly_accessible = false
# VERPLICHT: Encryptie in transit afdwingen (TLS)
ca_cert_identifier = "rds-ca-rsa2048-g1"
# Backup retentie volgens HIPAA beleid (minimaal 6 jaar)
backup_retention_period = var.backup_retention_period
skip_final_snapshot = false
# Sterke authenticatie afdwingen
iam_database_authentication_enabled = true
tags = var.tags
}
```
---
### **2. Integratie van Beleid en Toegangscontrole (Policy-as-Code)**
Gebruik **Terraform Cloud/Enterprise** met **Sentinel** of **AWS Control Tower** met **Customizations** om guardrails op organisatieniveau af te dwingen. Dit gaat *bovenop* uw module-code.
**Voorbeelden van Sentinel Policies (Policy-as-Code):**
* **Policy 1: Afdwingen van Encryptie op alle S3 Buckets**
```python
# sentinel/require-s3-encryption.sentinel
import "tfplan/v2" as tfplan
allowed_algos = ["aws:kms", "AES256"]
main = rule {
all tfplan.resources.aws_s3_bucket as _, instances {
all instances as _, r {
all r.applied.server_side_encryption_configuration as sse {
all sse.rule as rule {
rule.apply_server_side_encryption_by_default.sse_algorithm in allowed_algos
}
}
}
}
}
```
* **Policy 2: Blokkeer alle publieke RDS instances**
```python
# sentinel/block-public-rds.sentinel
import "tfplan/v2" as tfplan
main = rule {
all tfplan.resources.aws_db_instance as _, instances {
all instances as _, r {
r.applied.publicly_accessible is false
}
}
}
```
* **Policy 3: Controleer of resources de juiste HIPAA-tags hebben**
```python
# sentinel/require-hipaa-tags.sentinel
import "tfplan/v2" as tfplan
mandatory_tags = ["HIPAA", "DataClassification", "Owner"]
main = rule {
all tfplan.resources as type, resources {
all resources as name, r {
all mandatory_tags as t {
r.applied.tags contains t
}
}
}
}
```
---
### **3. Auditing en Logging**
Configureer dit op organisatieniveau, maar refereer eraan in uw modules.
* **AWS CloudTrail:** Zorg dat dit is ingeschakeld en locked down in uw landing zone. Log alle API-calls.
* **AWS Config:** Schakel AWS Config in met regelmatige audits. Maak regels die controleren op niet-geëncrypteerde resources (``s3-bucket-server-side-encryption-enabled``, ``rds-storage-encrypted``).
* **Terraform Cloud/Enterprise Audit Logs:** Gebruik de ingebouwde audit logs om te zien wie `terraform plan` en `apply` uitvoerde en welke wijzigingen er zijn gemaakt.
---
### **4. Toegangscontrole (Identity & Access Management)**
* **Terraform State:** Sla de state file **ALTIJD** op in een beveiligde, geëncrypteerde backend (e.g., S3 bucket met versioning en encryption ingeschakeld via je eigen module). Gebruik DynamoDB voor state locking.
* **Terraform Cloud/Enterprise Workspaces:** Gebruik teams en workspace permissions om het principe van least privilege toe te passen. Geef ontwikkelaars alleen `read` of `plan` rechten, en reserveer `apply` voor een gecontroleerde CI/CD-pipeline of compliance team.
* **AWS IAM:** Gebruik een strikt IAM beleid voor de gebruiker/role die Terraform uitvoert. Gebruik `Condition` statements om te voorkomen dat `storage_encrypted = false` of `publicly_accessible = true` wordt ingesteld.
```json
{
"Effect": "Deny",
"Action": [
"rds:CreateDBInstance",
"rds:ModifyDBInstance"
],
"Resource": "*",
"Condition": {
"Bool": {
"rds:StorageEncrypted": "false"
}
}
}
```
---
### **Best Practices Samenvatting**
1. **Gebruik Modules:** Creëer herbruikbare, compliant modules die encryptie en security standaard afdwingen.
2. **Policy-as-Code:** Implementeer Sentinel (of OPA) policies om proactief compliance te garanderen voordat infrastructure wordt aangelegd.
3. **Alles Loggen:** Zorg dat CloudTrail, AWS Config en Terraform audit logs zijn ingeschakeld en beschermd.
4. **Least Privilege:** Pas het principe van minimale rechten toe op zowel de Terraform uitvoerder als de aangemaakte resources.
5. **Review en Scannen:** Gebruik tools zoals `terraform plan` voor review, `tfsec` of `checkov` voor statische security analyse van je code, en `infracost` voor cost control.
6. **Documentatie:** Documenteer duidelijk in `README` files van je modules welke HIPAA-controles ze implementeren. Dit is cruciaal voor audits.
Door deze aanpak te volgen, transformeert u Terraform van een louter implementatietool naar een krachtig instrument voor governance en compliance, specifiek afgestemd op de strenge eisen van de gezondheidszorg.