AWS SSO アクセス許可セットのインラインポリシーを使って特定の期間のみ特権を与える

2022.05.12

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

はじめに

こんにちは。大阪オフィスの林です。

AWS SSO アクセス許可セットのインラインポリシーを使って「指定の期間のみ特権を与える」という検証を行う機会がありましたので内容をまとめておきたいと思います。
今回の検証では平時の運用として読み取り専用(下図の「ReadOnly」)のアクセス許可セットを使用して各AWSアカウントにログインしているような環境を想定しています。

  • 平時の利用

そのような環境に対して、一時的に特権のアクセス許可セット(下図の「Temp-Administrator」)を追加してユーザーとAWSアカウントにアタッチします。そのアクセス許可セットにアタッチするポリシーにはインラインポリシーを使用して「特定の期間のみ」というグローバル条件コンテキストキーも付与していきたいと思います。ザックリやりたいことは下図のイメージです。

  • 一時的な特権付与

やってみた

アクセス許可セットの作成とユーザー/AWSアカウントへのアタッチ

AWS SSOのダッシュボードから「アクセス許可セット」-「許可セットを作成」を選択します。

「カスタム許可セット」を選択し「次へ」を選択します。

「インラインポリシー」に下記ポリシーをコピペし「次へ」を選択します。 ※DateGreaterThan,DateLessThanは適宜変更ください。
ActionResourceを「*」で許可していますが、対象を限定するなども必要に応じてご検討ください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "*",
            "Resource": "*",
            "Condition": {
                "DateGreaterThan": {
                    "aws:CurrentTime": "2022-05-12T00:00:00Z"
                },
                "DateLessThan": {
                    "aws:CurrentTime": "2022-05-12T23:59:59Z"
                }
            }
        }
    ]
}

任意の許可セット名を入力し「次へ」を選択します。

内容を確認し「作成」を選択します。

アクセス許可セットが正常に作成されたことを確認します。

「AWSアカウント」から対象のAWSアカウントにチェックを入れ「ユーザーまたはグループを割り当て」を選択します。

対象のユーザーを選択し「Next」を選択します。

前述で作成したアクセス許可セットを選択し「Next」を選択します。

内容を確認し「送信」を選択します。

設定がはじまるので少し待ちます。

正常にプロビジョニングされたことを確認します。

念のためプロビジョニングされていることを確認する為、対象のAWSアカウントを選択します。

対象のユーザーに、対象のアクセス許可セットがアタッチされていることを確認します。

動作確認

まずは指定の期間内でログインして動作を見ていきます。ユーザー名を入力します。

パスワードを入力します。

アタッチされているAWSアカウントが表示されるのでクリックします。

表示されたアクセス許可セットのうち、一時的に付与した「Temp-Administrator」の権限でAWSマネージメントコンソールを開きます。

ログイン後、IAMユーザーを作成しましたが指定期間内なので通常通り作成が出来ます。

アクセス許可セット「Temp-Administrator」のインラインポリシーを編集し、期間を過去日時にしてみます。

同様にIAMユーザーを作成しようとしたところ、指定日時外なのでアクセス権がない旨のメッセージが表示され操作が出来なくなりました。

まとめ

マネージメントコンソールでの操作ですと少々煩わしい部分はありますが、目的としていた、AWS SSOのアクセス許可セットを使って特定の期間のみ特権アクセスを許可するポリシーを作成することが出来ました。CLI等を使ってもう少し簡略化出来ると思うので別のエントリでまとめておきたいと思います。

以上、大阪オフィスの林がお送りしました!