AWS Configでアクセスキーが最終利用日から指定された日数を超えている場合は無効化する

AWS Configでアクセスキーが最終利用日から指定された日数を超えている場合は無効化する

Clock Icon2022.06.22 12:09

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

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

今日はAWS ConfigでIAMユーザーのアクセスキーが最終利用日から指定された日数を超えていないか確認し、指定の日数を超えている場合は自動修復アクションでアクセスキーを無効化してみました。
指定の日数を超えている場合はアクセスキーの無効化だけではなく、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(この日数を超えたアクセスキーを無効化します。)
保存します。
※MaxCredentialUsageAgeを0で設定すると最終利用日に関係なく、アクセスキーが作成から指定された日数を超えている場合は無効化するように設定できます。

動作確認

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

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

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

さいごに

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

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.