センシティブなデータを暗号化してソースコードに埋め込む。
手順
暗号化文字列を作成する方法
import boto3
import base64
def main():
key_id = 'マスターキーのARN'
Plaintext = '暗号化対象の文字列'
response = kms.encrypt(
KeyId = key_id,
Plaintext = Plaintext
)['CiphertextBlob']
Ciphertext = base64.b64encode(response).decode('utf-8')
print('Ciphertext='+Ciphertext)
if __name__ == '__main__':
main()
上記処理で得られたCiphertextはKMSのマスターキーによって暗号化されている。
プログラム中で使用する場合は以下のようになる
key_id = 'マスターキーのARN'
Ciphertext = '上記処理で得られた暗号化文字列'
response = kms_client.decrypt(
CiphertextBlob=Ciphertext,
KeyId=key_id
)
plaintext = response['Plaintext'].decode('utf-8')
KMSで暗号化しているため、仮にソースコードが流出したとしても、KMSのDecrypt API実行権限
がなければ機密情報が漏れる心配がなく安心ですね。
おわりに
暗号化文字列の複合化にKMSの権限が必要なため、プログラムを実行するサービスに対して
忘れずにKMS実行権限を付与しましょう。