Python
 Computer >> コンピューター >  >> プログラミング >> Python

boto3を使ってAWS Secrets Managerでランダムパスワードを生成する方法【Python】

課題: Pythonのboto3ライブラリを使用して、AWS Secrets Managerでランダムなパスワードを生成します。

解決のためのアプローチとアルゴリズム

  • ステップ1: 例外処理のために、boto3およびbotocoreの例外クラスをインポートします。

  • ステップ2: この処理には特別な入力パラメータは不要です。

  • ステップ3: boto3ライブラリを使ってAWSセッションを作成します。デフォルトプロファイルにregion_nameが設定されていることを確認してください。設定されていない場合は、セッション作成時に明示的にregion_nameを渡す必要があります。

  • ステップ4: secretmanager向けのAWSクライアントを作成します。

  • ステップ5: get_random_passwordを呼び出し、希望するパスワードの複雑さに応じて各パラメータを指定します。

  • ステップ6: 生成されたランダムパスワードが返されます。

  • ステップ7: パスワード生成中に問題が発生した場合に備え、汎用的な例外処理を実装しておきます。

サンプルコード

以下のコードでランダムパスワードを生成できます。

import boto3
from botocore.exceptions import ClientError

def generate_random_password():
    session = boto3.session.Session()
    s3_client = session.client('secretmanager')
    try:
        response = s3_client.get_random_password(PasswordLength=18,
            ExcludeCharacters="",
            ExcludeNumbers=False,
            ExcludePunctuation=True,
            ExcludeUppercase=False,
            ExcludeLowercase=False,
            IncludeSpace=False,
            RequireEachIncludedType=True
        )
        return response
    except ClientError as e:
        raise Exception("boto3 client error in generate_random_password: " + e.__str__())
    except Exception as e:
        raise Exception("Unexpected error in generate_random_password: " + e.__str__())

a = generate_random_password()
print(a["RandomPassword"])

主なパラメータの解説

  • PasswordLength: 生成するパスワードの文字数を指定します(6〜96文字の範囲で設定可能)。

  • ExcludeCharacters: パスワードに含めたくない文字を指定します。例えば紛らわしい文字("O", "0", "l"など)を除外するのに便利です。

  • ExcludeNumbers / ExcludeUppercase / ExcludeLowercase: 数字・大文字・小文字をそれぞれ除外するかどうかをTrue/Falseで指定します。

  • ExcludePunctuation: Trueにすると記号が含まれなくなります。上記のサンプルでは記号を除外しています。

  • IncludeSpace: Trueにするとスペースが含まれる可能性があります。

  • RequireEachIncludedType: Trueにすると、除外されていないすべての文字種(大文字・小文字・数字・記号)が最低1文字ずつ含まれることが保証されます。

出力結果

mcwJ6tLfN0uidY9zcY

このように、get_random_password APIを利用すれば、複雑さの要件に合わせた安全なランダムパスワードを簡単に生成できます。データベースやアプリケーションの認証情報を自動ローテーションする際など、Secrets Managerと組み合わせた運用にも活用できる便利な機能です。

  1. Boto3を使ってAWS Glueデータカタログからトリガーを削除する方法

    概要この記事では、Pythonのboto3ライブラリを使用して、AWSアカウント内に存在するトリガー(Trigger)を削除する方法を解説します。課題 − Pythonのboto3ライブラリを使って、自分のアカウントにあるトリガーを削除します。例 − アカウントから「test」という名前のトリガーを削除します。解決のための手順(アプローチ/アルゴリズム)ステップ1 − 例外処理のためにboto3およびbotocoreの例外モジュールをインポートします。ステップ2 − AWS Glueカタログから削除したいトリガーの名前(trigger_name)をパラメータとして渡します。ステップ3 − bo

  2. Boto3を使ってAWS Glueデータカタログからデータベースを削除する方法

    課題Pythonのboto3ライブラリを使用して、自分のAWSアカウント内に作成されたデータベースを削除します。例 − アカウントに作成された「Portfolio」というデータベースを削除します。解決のためのアプローチとアルゴリズムステップ1 − 例外をハンドリングするために、boto3とbotocoreの例外モジュールをインポートします。ステップ2 − AWS Glue Catalogから削除したいデータベース名を database_name パラメータとして渡します。ステップ3 − boto3ライブラリを使ってAWSセッションを作成します。デフォルトプロファイルに region_name