AWS ConfigでIAMユーザーのアクセスキーが作成から指定された日数を超えている場合は無効化する

AWS ConfigでIAMユーザーのアクセスキーがローテーションされているか確認し、ローテーションされていない場合は自動修復アクションでアクセスキーを無効化してみました。
2022.06.22

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。
コンサルティング部 繁松です。

今日はAWS ConfigでIAMユーザーのアクセスキーが作成から指定された日数を超えていないか確認し、指定の日数を超えている場合は自動修復アクションでアクセスキーを無効化してみました。

やってみた

設定をやっていきます。
作成から90日を超えたアクセスキーを無効化する設定で進めます。

IAMポリシーの作成

修復アクションに設定するロール用のポリシーの作成を行います。

IAM → ポリシー → ポリシーの作成
JSONを選択し下記の内容を入力し次のステップに進みます。

{  
    "Version": "2012-10-17",  
    "Statement": [  
        {  
            "Sid": "VisualEditor0",  
            "Effect": "Allow",  
            "Action": [  
                "config:ListDiscoveredResources",  
                "iam:GetAccessKeyLastUsed",  
                "iam:UpdateAccessKey",  
                "iam:GetUser",  
                "iam:GetLoginProfile",  
                "iam:DeleteLoginProfile",  
                "iam:ListAccessKeys"  
            ],  
            "Resource": "*"  
        }  
    ]  
}

名前を入力しポリシーを作成します。

IAMロールの作成

修復アクションに設定するロールの作成を行います。

IAM → ロール → ロールを作成
AWSのサービスを選択し、ユースケースにSystems Manager を選択します。

ポリシーで先程作成したポリシーを選択し次に進みます。
ロール名を入力しロールを作成します。

AWS Configルールの作成

AWS config → ルール → ルールを追加
ルールタイプの選択:AWSによって管理されるルールの追加
AWSマネージド型ルール:access-keys-rotatedを選択

パラメータ
maxAccessKeyAge:90(デフォルト)
※アクセスキーがmaxAccessKeyAgeを超えても更新されていない場合非準拠になります。

[ルールを追加]をクリックします。

修復アクションの作成

作成したルールを選択し、アクションから修復の管理を選択します。

自動修復にチェックを入れます。
修復アクションにAWSConfigRemediation-RevokeUnusedIAMUserCredentialsを選択します。

リソースIDパラメータでIAMResourceIdを選択し、パラメータを入力します。
AutomationAssumeRole:作成したロールのARN
MaxCredentialUsageAge:90(この日数を超えたアクセスキーを無効化します。)
保存します。

動作確認

90日で設定した箇所を3日に変更しアクセスキーが無効化されるかを確認してみます。
こちらのアクセスキーで確認します。
上は作成から6日経過、下は作成から1日経過のアクセスキーです。

修復アクションとルールのパラメータを3日に変更しました。

再評価します。
対象のリソースが非準拠になり3日を超えたアクセスキーが無効になりました。

さいごに

簡単に指定日数を超えたアクセスキーを自動で無効化することができました。
なにかのお役に立つと幸いです。