PythonでBoto3を使用しAmazonKMSで、KMS(対称暗号化)キーを作成する

スポンサーリンク

PythonでBoto3を使用しAmazonKMS(Key Management Service)で、KMS(対称暗号化)キーを作成します。なお、KMSキーには、対称暗号化キーと非対称暗号化キーがありますが、今回は対称暗号化キーとなります。

なお、今回はBoto3を用います。このライブラリ・モジュールは、Pythonの標準ライブラリではありませんので、事前にインストールする必要があります。また、Boto3を用いる場合には、クレデンシャル(資格情報)などの設定が必要になりますので、こちらを参考にしていただければと思います。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■Boto3を使用しAmazonKMSで、KMS(対称暗号化)キーを作成する

早速、Boto3を使用しAmazonKMSで、KMS(対称暗号化)キーを作成するスクリプトを書いていきます。

■コード

import boto3
AWS_REGION = "us-east-2"

kms_client = boto3.client("kms", region_name=AWS_REGION)

def create_kms_key():

        response = kms_client.create_key(Description='kms-test',
                                         Tags=[{
                                             'TagKey': 'Name',
                                             'TagValue': 'kms-test'
                                         }])
        return response

if __name__ == '__main__':
    kms = create_kms_key()
    print(kms)

importでboto3を呼び出します。その後、AWS_REGIONという変数を定義し、その中で、特定のAWSリージョンを指定し格納します。今回は「us-east-2」とします。

格納後、kms_clientという変数を定義し、その中でboto3.client()を用います。括弧内には第1の引数,パラメータとしてkmsを渡します。その後、第2の引数,パラメータとして「region_name=AWS_REGION」を渡します。これでクライアントが作成されました。

作成後、def文を用いてcreate_kms_key()という関数を定義します。定義された関数が呼び出された時に実行される処理としては、responseという変数を定義し、その中でkms_clientに対してcreate_key()を用います。括弧内には、第1の引数,パラメータ(Description=)として、KMSキーの説明を渡します。今回は「kms-test」とします。第2の引数,パラメータ(Tags=)として、KMSキーに割り当てるタグを1つ以上渡します。今回は「’TagKey’: ‘Name’」と「’TagValue’: ‘kms-test’」とします。これで一意のKMSキーが作成されます。作成されたものが、response変数に格納され、returnとしてresponse変数を返します。

最後に「if __name__ == ‘__main__’:」を用いて動作を実行、デバックしてみます。

kmsという変数を定義し、その中でcreate_kms_key()を呼び出し処理されたものを格納します。格納後、print()でkms変数内の情報を出力します。

■実行・検証

このスクリプトを「kms_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

{'KeyMetadata': {'AWSAccountId': '826876594767', 'KeyId': '939d0660-57b9-4da2-9c86-20c46a66914e', 'Arn': 'arn:aws:kms:us-east-2:826876594767:key/939d0660-57b9-4da2-9c86-20c46a66914e', 'CreationDate': datetime.datetime(2022, 7, 5, 12, 18, 18, 930000, tzinfo=tzlocal()), 'Enabled': True, 'Description': 'kms-test', 'KeyUsage': 'ENCRYPT_DECRYPT', 'KeyState': 'Enabled', 'Origin': 'AWS_KMS', 'KeyManager': 'CUSTOMER', 'CustomerMasterKeySpec': 'SYMMETRIC_DEFAULT', 'KeySpec': 'SYMMETRIC_DEFAULT', 'EncryptionAlgorithms': ['SYMMETRIC_DEFAULT'], 'MultiRegion': False}, 'ResponseMetadata': {'RequestId': '50ecbacc-f13d-4d46-951e-dfa1cb32fe21', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': '50ecbacc-f13d-4d46-951e-dfa1cb32fe21', 'cache-control': 'no-cache, no-store, must-revalidate, private', 'expires': '0', 'pragma': 'no-cache', 'date': 'Tue, 05 Jul 2022 03:18:19 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '481'}, 'RetryAttempts': 0}}

実行してみると、上記のメッセージが出力されました。今回はKeyIdが「’939d0660-57b9-4da2-9c86-20c46a66914e’」という一意のKMS(対称暗号化)キーを作成することができました。

{'KeyMetadata': {'AWSAccountId': '826876594767', 'KeyId': '57a9239c-d004-4b48-a36f-706c2f408b54', 'Arn': 'arn:aws:kms:us-east-2:826876594767:key/57a9239c-d004-4b48-a36f-706c2f408b54', 'CreationDate': datetime.datetime(2022, 7, 5, 12, 21, 43, 769000, tzinfo=tzlocal()), 'Enabled': True, 'Description': 'kms-test', 'KeyUsage': 'ENCRYPT_DECRYPT', 'KeyState': 'Enabled', 'Origin': 'AWS_KMS', 'KeyManager': 'CUSTOMER', 'CustomerMasterKeySpec': 'SYMMETRIC_DEFAULT', 'KeySpec': 'SYMMETRIC_DEFAULT', 'EncryptionAlgorithms': ['SYMMETRIC_DEFAULT'], 'MultiRegion': False}, 'ResponseMetadata': {'RequestId': 'e32b5fa1-eadf-48c3-84c6-fef116a41893', 'HTTPStatusCode': 200, 'HTTPHeaders': {'x-amzn-requestid': 'e32b5fa1-eadf-48c3-84c6-fef116a41893', 'cache-control': 'no-cache, no-store, must-revalidate, private', 'expires': '0', 'pragma': 'no-cache', 'date': 'Tue, 05 Jul 2022 03:21:43 GMT', 'content-type': 'application/x-amz-json-1.1', 'content-length': '482'}, 'RetryAttempts': 0}}

なお、再びこの作成したスクリプトを実行すると、KeyIdが「’57a9239c-d004-4b48-a36f-706c2f408b54’」となっていることが確認でき、前に実行したものとは別の一意のKMS(対称暗号化)キーが作成されました。

作成後、「AWS マネジメントコンソール」から「KMS」サービスを選択し、今回のスクリプト内ではリージョンを「米国東部(オハイオ)us-east-2」に設定しているので、リージョンを「米国東部(オハイオ)us-east-2」にします。

選択後「Key Management Service (KMS)」から「カスタマー管理型のキー」を選択すると、今回作成した一意のKMS(対称暗号化)キーを確認することができました。

コメント

タイトルとURLをコピーしました