【问题标题】:How to notify IAM Users when Password/Access Keys expire?密码/访问密钥过期时如何通知 IAM 用户?
【发布时间】:2019-09-24 14:07:49
【问题描述】:

我正在尝试寻找一种解决方案,以便在所有 AWS IAM 用户的密码和访问密钥过期时通知他们。有没有办法通过控制台或一些 Python 脚本来做到这一点?

IAM 用户应至少在其 IAM 密码和访问密钥到期前一周收到一封邮件。

【问题讨论】:

    标签: python amazon-web-services passwords amazon-iam


    【解决方案1】:

    编写一个定期运行的脚本(例如,您可以使用计划的 Lambda 执行此操作)。

    致电 get_credential_report 了解 IAM 密码将在多长时间内过期,并致电 list_access_keys 了解创建访问密钥的时间(从而计算何时需要轮换)。

    注意:AWS 管理控制台会在 IAM 用户在密码到期后 15 天内发出警告。

    【讨论】:

    • 很抱歉,无法继续。请您多指导一下。
    • get_credential_report() 仅获取 csv 格式的报告。我想向密码即将在一周内到期的 IAM 用户发送通知/邮件。
    【解决方案2】:

    对于密码,您可以使用GetCredentialReport API 调用。在那里你会找到password_next_rotation:

    当帐户具有要求密码轮换的密码策略时,此字段包含日期和时间,采用 ISO 8601 日期时间格式,当用户需要设置新密码时。 AWS 账户 (root) 的值始终为 not_supported。

    使用这些信息,您可以编写一个脚本来发送这些电子邮件(假设您在 IAM 中使用他们的电子邮件地址标记了您的用户)

    boto3:get_credential_report() 中可用。

    请注意,访问密钥不会过期。

    【讨论】:

      【解决方案3】:

      这是我对一个简单的 bash 脚本的贡献,它可以帮助更轻松地实现这一目标

      #!/usr/bin/env bash
      # VERSION 1.0.0
      
      export REPORT=$(aws iam get-credential-report --query "Content" --output text | base64 -d)
      export USERS=($(echo $REPORT | awk -F "\"*,\"*" 'NR>2 {print $1"|"$7}'))
      
      for user in $USERS;
        do
          export USER=$(echo $user | awk -F '[|]' '{print $1}')
          export EXPIRATION_DATE=$(echo $user | awk -F '[|]' '{print $2}')
      
          if [[ "$EXPIRATION_DATE" != "N/A" ]] && [ "$EXPIRATION_DATE" != "not_supported" ]; then
              echo "Checking user $USER with expiration date -$EXPIRATION_DATE-"    
              let REM_DAYS=\($(date +%s -d $EXPIRATION_DATE)-$(date +%s)\)/86400
              echo $REM_DAYS
          fi
        done  
      
      

      这是我的链接,如果我发现一些错误/改进,我将发布更新版本https://gist.github.com/andresjz/048891dc6e92c19bc3346c00513232f3#file-get_accounts_expirations-sh-L5

      【讨论】:

        猜你喜欢
        • 2020-01-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 2020-04-19
        • 1970-01-01
        • 2015-08-02
        相关资源
        最近更新 更多