Docker Secrets đ¤Ģ â
āĻĄāĻāĻžāϰ āĻāύā§āĻā§āĻāύāĻžāϰ⧠āϏā§āύāϏāĻŋāĻāĻŋāĻ āϤāĻĨā§āϝ (āϝā§āĻŽāύ: āĻĒāĻžāϏāĻā§āĻžāϰā§āĻĄ, āĻāĻĒāĻŋāĻāĻ āĻāĻŋ, āĻĒā§āϰāĻžāĻāĻā§āĻ āĻāĻŋ) āύāĻŋāϰāĻžāĻĒāĻĻā§ āĻŽā§āϝāĻžāύā§āĻ āĻāϰāĻžāϰ āĻāύā§āϝ Docker Secrets āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§āĨ¤ āĻāĻāĻŋ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞā§āϰ āϤā§āϞāύāĻžā§ āĻ āύā§āĻ āĻŦā§āĻļāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻāĨ¤
ā§§. Docker Secrets āĻāĻŋ? â
Docker Secrets āĻšāϞ⧠āĻāĻāĻāĻŋ āĻĄāĻāĻžāϰ āύā§āĻāĻŋāĻ āĻĢāĻŋāĻāĻžāϰ āϝāĻž āϏā§āύāϏāĻŋāĻāĻŋāĻ āĻĄā§āĻāĻžāĻā§ āĻāύāĻā§āϰāĻŋāĻĒā§āĻā§āĻĄ āĻ āĻŦāϏā§āĻĨāĻžā§ āϏā§āĻā§āϰ āĻāϰ⧠āĻāĻŦāĻ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻ āύā§āĻŽā§āĻĻāĻŋāϤ āĻāύā§āĻā§āĻāύāĻžāϰāĻā§ āϏā§āĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰā§āϰ āĻāĻā§āϏā§āϏ āĻĻā§ā§āĨ¤
- āĻāĻāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ Docker Swarm āĻŽā§āĻĄā§ āĻāĻžāĻ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĄāĻŋāĻāĻžāĻāύ āĻāϰāĻž āĻšā§ā§āĻāĻŋāϞāĨ¤
- āĻŦāϰā§āϤāĻŽāĻžāύ⧠Docker Compose-āĻāϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϞā§āĻāĻžāϞ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻā§āĻ āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§āĨ¤
⧍. āĻā§āύ āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ (.env) āϝāĻĨā§āώā§āĻ āύā§? â
āĻ
āύā§āĻ āϏāĻŽā§ āĻāĻŽāϰāĻž .env āĻĢāĻžāĻāϞ āĻŦāĻž ENV āĻāύā§āϏāĻā§āϰāĻžāĻāĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋāĨ¤ āĻāĻŋāύā§āϤ⧠āĻāϰ āĻāĻŋāĻā§ āĻā§āĻāĻāĻŋ āĻāĻā§:
docker inspectāĻāĻŽāĻžāύā§āĻĄ āĻĻāĻŋāϞ⧠āĻāύāĻāĻžāϝāĻŧāϰāύāĻŽā§āύā§āĻ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻā§āϞ⧠āĻĒā§āϞā§āĻāύ āĻā§āĻā§āϏāĻ āĻšāĻŋāϏā§āĻŦā§ āĻĻā§āĻāĻž āϝāĻžā§āĨ¤- āϞāĻ āĻĢāĻžāĻāϞ⧠āĻāĻā§āϞ⧠āĻāϞ⧠āĻāϏāĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻž āĻĨāĻžāĻā§āĨ¤
- āĻĄāĻāĻžāϰ āĻšāĻŋāϏā§āĻā§āϰāĻŋāϤ⧠āĻāĻā§āϞ⧠āĻĨā§āĻā§ āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
Docker Secrets āĻāĻ āϏāĻŽāϏā§āϝāĻž āϏāĻŽāĻžāϧāĻžāύ āĻāϰ⧠āĻāĻžāϰāĻŖ āĻāĻāĻŋ āĻŽā§āĻŽāϰāĻŋāϤ⧠(tmpfs) āĻŽāĻžāĻāύā§āĻ āĻšā§ āĻāĻŦāĻ āĻĄāĻŋāϏā§āĻā§ āϏā§āĻĨāĻžā§ā§āĻāĻžāĻŦā§ āĻāĻŽāĻž āĻĨāĻžāĻā§ āύāĻžāĨ¤
ā§Š. Docker Compose-āĻ Secrets āĻŦā§āϝāĻŦāĻšāĻžāϰ â
āϞā§āĻāĻžāϞāĻŋ āĻĄāĻāĻžāϰ āĻāĻŽā§āĻĒā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āϏāĻŽā§ āĻāĻĒāύāĻŋ āύāĻŋāĻā§āϰ āĻŽāϤ⧠āĻāϰ⧠āϏāĻŋāĻā§āϰā§āĻāϏ āĻĄāĻŋāĻĢāĻžāĻāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ:
services:
db:
image: postgres
secrets:
- db_password
secrets:
db_password:
file: ./password.txtāĻāύā§āĻā§āĻāύāĻžāϰā§āϰ āĻā§āϤāϰ⧠āĻāĻ āϏāĻŋāĻā§āϰā§āĻāĻāĻŋ /run/secrets/db_password āĻĒāĻžāĻĨā§ āĻĒāĻžāĻā§āĻž āϝāĻžāĻŦā§āĨ¤
ā§Ē. Docker Swarm āĻŽā§āĻĄā§ Secrets Management â
Swarm āĻŽā§āĻĄā§ āϏāĻŋāĻā§āϰā§āĻ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻāĻŽāĻžāύā§āĻĄ:
echo "my_super_secret_password" | docker secret create db_pass -āϏāĻžāϰā§āĻāĻŋāϏ āĻā§āϰāĻŋā§ā§āĻ āĻāϰāĻžāϰ āϏāĻŽā§ āϏāĻŋāĻā§āϰā§āĻ āϝā§āĻ āĻāϰāĻž:
docker service create --name my-app --secret db_pass my-imageā§Ģ. āϏāĻŋāĻā§āϰā§āĻ āĻŽāĻžāĻāύā§āĻāĻŋāĻ (Mounting) â
āĻĄāĻŋāĻĢāϞā§āĻāĻāĻžāĻŦā§ āϏāĻŋāĻā§āϰā§āĻāϏ /run/secrets/<secret_name> āĻĄāĻŋāϰā§āĻā§āĻāϰāĻŋāϤ⧠āĻĨāĻžāĻā§āĨ¤ āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϏā§āĻ āĻĢāĻžāĻāϞ āĻĨā§āĻā§ āĻĄā§āĻāĻž āϰāĻŋāĻĄ āĻāϰ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦā§āĨ¤
# Python āĻāĻĻāĻžāĻšāϰāĻŖ
with open('/run/secrets/db_password', 'r') as f:
db_password = f.read().strip()ā§Ŧ. āĻĨāĻžāϰā§āĻĄ-āĻĒāĻžāϰā§āĻāĻŋ āϏāĻŋāĻā§āϰā§āĻ āĻŽā§āϝāĻžāύā§āĻāĻžāϰ (HashiCorp Vault) â
āĻŦā§ āĻāύā§āĻāĻžāϰāĻĒā§āϰāĻžāĻāĻ āϞā§āĻā§āϞ⧠āĻĄāĻāĻžāϰā§āϰ āĻŦāĻŋāϞā§āĻ-āĻāύ āϏāĻŋāĻā§āϰā§āĻāϏ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻā§āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ HashiCorp Vault, AWS Secrets Manager, āĻŦāĻž Azure Key Vault āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšā§āĨ¤ āĻāĻā§āϞ⧠āϏāĻŋāĻā§āϰā§āĻ āϰā§āĻā§āĻļāύ (Secret Rotation) āĻāĻŦāĻ āĻāϰāĻ āĻ ā§āϝāĻžāĻĄāĻāĻžāύā§āϏāĻĄ āϏāĻŋāĻāĻŋāĻāϰāĻŋāĻāĻŋ āĻĒāϞāĻŋāϏāĻŋ āĻĒā§āϰāĻĻāĻžāύ āĻāϰā§āĨ¤
āϏāĻžāϰāϏāĻāĻā§āώā§āĻĒ (Summary) â
āύāĻŋāϰāĻžāĻĒāĻĻ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰā§āϰ āĻāύā§āϝ āϏā§āύāϏāĻŋāĻāĻŋāĻ āĻĄā§āĻāĻž āĻāĻāύā§āĻ āĻšāĻžāϰā§āĻĄāĻā§āĻĄ āĻāϰāĻŦā§āύ āύāĻžāĨ¤ āĻā§āĻ āĻĒā§āϰā§āĻā§āĻā§āĻā§āϰ āĻāύā§āϝ Docker Compose Secrets āĻāĻŦāĻ āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύ āĻŦāĻž āĻā§āϞāĻžāϏā§āĻāĻžāϰā§āϰ āĻāύā§āϝ Docker Swarm Secrets āĻŦāĻž Vault āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāĻŦāĻā§ā§ā§ āĻāĻžāϞ⧠āĻĒā§āϰā§āϝāĻžāĻāĻāĻŋāϏāĨ¤
CAUTION
āϏāĻŋāĻā§āϰā§āĻāϏ āĻĢāĻžāĻāϞāĻā§āϞ⧠(āϝā§āĻŽāύ: password.txt) āĻāĻāύā§āĻ āĻāĻŋāĻ āĻŦāĻž āϏā§āϰā§āϏ āĻāύā§āĻā§āϰā§āϞ⧠āĻĒā§āĻļ āĻāϰāĻŦā§āύ āύāĻžāĨ¤ āĻāĻā§āϞā§āĻā§ .gitignore-āĻ āϰāĻžāĻā§āύāĨ¤