ヤマムギ

growing hard days.

*

IAMユーザーのマネジメントコンソールログインパスワードを変更してDynamoDBに記録するLambda(Python)

      2020/01/19


やりたいこと

IAMユーザーのマネジメントコンソールへのサインインパスワードを動的に変更したくて、上記のアーキテクチャにしました。
Lambda(Python3.8)で実行しています。

  • SecretsManagerでランダムパスワードを生成します。
  • IAMユーザーのログインプロファイルをアップデートします。
  • 結果をDynamoDBに書きこみます。

AWS複数アカウントのリソースをLambda(Python)から一括操作したくてのLambda関数に追加して呼び出してます。

SecretsManagerでのランダムパスワードの生成

boto3 SecretsManagerのクライアントAPIで、get_random_passwordを使ってパスワードを生成しています。

  • PasswordLength パスワードの長さ。
  • ExcludeCharacters 除外する文字。見分けがつきにくい文字を除外しました。
  • ExcludeNumbers 数字を除外するか。含めるのでFalseにしてます。
  • ExcludePunctuation 記号を除外するか。含めるのでFalseにしてます。
  • ExcludeUppercase 大文字を除外するか。含めるのでFalseにしてます。
  • ExcludeLowercase 小文字を除外するか。含めるのでFalseにしてます。
  • IncludeSpace スペースを含めるか。含めないのでFalseにしてます。
  • RequireEachIncludedType すべての文字種を1つ以上含めるか。含めるのでTrueにしてます。

IAMユーザーのログインプロファイルをアップデート

IAMのリソースAPIで指定したユーザーのログインプロファイルが操作できました。
updateにパスワードを含めます。
ログイン時にユーザーへのパスワード変更は、今回の要件では必要ないので、PasswordResetRequired=False としてます。

結果をDynamoDBへの書き込み

今回は1アイテムしか扱いませんので、batch_writerは使わずに、put_itemで書き込んでます。
DynamoDBのパーティションキーはaccount_id、ソートキーは iam_userで、課金方式はたまに書き込むだけなので オンデマンド方式です。

できました!


最後までお読みいただきましてありがとうございました!

【PR】 「AWS認定試験対策 AWS クラウドプラクティショナー」という本を書きました。

【PR】 「AWSではじめるLinux入門ガイド」という本を書きました。

【PR】 「ポケットスタディ AWS認定 デベロッパーアソシエイト」という本を書きました。

【PR】 「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル」という本を書きました。

 - AWS , , , ,

ad

ad

  関連記事

Amazon CloudSearchにAWS Lambda(Python)からデータをアップロードする

このブログはゆるっとアドベントカレンダー Advent Calendar 201 …

AWS Lambda(Python)で生成した文字をAmazon Connectで音声を設定して発信する

Amazon Connectから発信する電話の音声を動的に設定します。 Lamb …

Amazon EC2 インスタンスメタデータサービス(IMDS) v2のみにしました

今さらながらですが、EC2 インスタンスメタデータサービス(IMDS) v2を確 …

ALBにWAFを関連付けて特定のヘッダー以外はブロックする

おかげさまで、ブログのアクセスも増えてきて、t3.nano EC2インスタンス単 …

SendGridのイベントをAPI Gateway -> Lambda(Python) -> DynamoDBに格納する

SendGridのメールイベントログはコンソールで確認出来るのは直近7日分で一括 …

RDS + VPC + Lambda + API Gateway + CloudFront + WAF + ACMでAPIを構築する

RDSのMySQLの情報を与えられたリクエストをキーにしてjsonで返すAPIを …

特定AWSアカウント特定リージョンのSQSキューを削除するLambda(Python)

やりたいこと 特定アカウント内特定リージョン内のSQSキューを全部削除したいです …

「JAWS-UG in AWS Cloud Roadshow 2017 大阪」で運営をしました

AWS Cloud Roadshow 2017 大阪のナイトイベントで、「JAW …

オンプレミスに見立てたオハイオリージョンにVyOSインスタンスを起動して東京リージョンからVPN接続

AWSクイックスタートのActive Directory Domain Serv …

boto3(Python SDK) s3 get_object でバイト範囲を指定する

S3のGetObjectアクションでバイト範囲を指定することができます。 それに …