python で kms を使って暗号化と複合
階層
.
├── .env
├── decrypt.py
└── encrypt.py
.env
kms の arn と暗号化したいパスワードを記載する。
ARN=arn:aws:kms:ap-northeast-1:123456789012:key/12345678-1234-1234-1234-123456789012
PASSWORD="some_password"
encrypt.py
.env の PASSWORD 記載の値を暗号化して encrypted.yml に書き出す。
import base64
import os
import boto3
import yaml
from dotenv import load_dotenv
load_dotenv()
kms = boto3.client("kms")
key_id = os.environ["ARN"]
password = os.environ["PASSWORD"]
def encrypt(plain_text):
response = kms.encrypt(KeyId=key_id, Plaintext=plain_text)
return response["CiphertextBlob"]
encrypted = base64.b64encode(encrypt(password)).decode("utf-8")
yaml_data = {"password": encrypted}
with open("./encrypted.yml", "w") as f:
yaml.dump(yaml_data, f)
decrypt.py
encrypted.yml の PASSWORD 記載の値を複合して decrypted.yml に書き出す。
import base64
import os
import boto3
import yaml
from dotenv import load_dotenv
load_dotenv()
kms = boto3.client("kms")
key_id = os.environ["ARN"]
with open("./encrypted.yml", "r") as f:
yaml_data = yaml.safe_load(f)
encrypted = base64.b64decode(yaml_data["password"])
decrypted = kms.decrypt(CiphertextBlob=encrypted, KeyId=key_id)["Plaintext"].decode(
"utf-8"
)
yaml_data = {"password": decrypted}
with open("./decrypted.yml", "w") as f:
yaml.dump(yaml_data, f, encoding="utf8", allow_unicode=True)
ディスカッション
コメント一覧
まだ、コメントがありません