Amazon QuickSightとMicrosoft Entra IDをSAML連携させた場合のSessionDurationの有効範囲について

TECH記事

こんにちは。Dantoです。

今回は、Amazon QuickSightとMicrosoft Entra IDをSAML連携した場合のSessionDuration値の役割について書いていきます。

TL; DR;

  • SessionDurationの設定値はQuickSightのセッション継続時間とは無関係
    • QuickSightのセッション継続時間は独自管理となっており、12時間固定

本題

前提

Amazon QuickSightとMicrosoft Entra IDをSAML連携させた場合、オプションでEntra ID側にSessionDuration値を設定することができます。

SessionDurationとは、読んで字のごとく「セッションを継続させる時間」を表す属性ですが、念のため公式ドキュメントの記述を引用しておきます。

(Optional) You can use an Attribute element with the Name attribute set to https://aws.amazon.com/SAML/Attributes/SessionDuration". This element contains one AttributeValue element that specifies how long the user can access the AWS Management Console before having to request new temporary credentials. The value is an integer representing the number of seconds for the session. The value can range from 900 seconds (15 minutes) to 43200 seconds (12 hours). If this attribute is not present, then the credential last for one hour (the default value of the DurationSeconds parameter of the AssumeRoleWithSAML API).

(オプション) Name 属性を https://aws.amazon.com/SAML/Attributes/SessionDuration” に設定した Attribute 要素を使用できます。この要素には AttributeValue 要素が 1 つ含まれ、ユーザーが新しい一時的な認証情報を要求するまでに AWS Management Console にアクセスできる時間を指定します。値は、セッションの秒数を表す整数です。値の範囲は 900 秒(15 分)から 43200 秒(12 時間)です。この属性が存在しない場合は、クレデンシャルは 1 時間持続します (AssumeRoleWithSAML API の DurationSeconds パラメータのデフォルト値)。

ドキュメントからは3つの情報を読み取ることができそうです。

  • https://aws.amazon.com/SAML/Attributes/SessionDurationの値として整数値を設定できる
  • SessionDurationではAWSマネージメントコンソールにアクセスできる時間を指定する
  • 設定値の範囲は900(15分)から43200(12時間)
    • デフォルトは3600(1時間)

ひとまず、SessionDurationに設定した値はAWSマネージメントコンソールにアクセス可能な時間と関係していることは理解しました。

また、ここではIDプロバイダにIAMロールを割り当てる際に、許可されるアクセスとして「プログラムと AWS マネジメントコンソールへのアクセスを許可する」を選択しています。

疑問

SessionDurationの値は、QuickSightコンソールにアクセスできるセッションの継続時間とは関係ないのか…?

(SessionDurationを900秒に設定したらQuickSightのセッション継続時間も900秒になるのか…?)

(↓↓↓QuickSightコンソール)

結論

SessionDurationの設定値とQuickSight側のセッション継続時間は無関係

あくまで、SessionDurationはAWSマネージメントコンソールにアクセス可能なセッションとのみ関係しているそうです。

また、QuickSight側のセッション継続時間は独自管理であり、12時間固定で変更はできません。

なので、SessionDurationを設定値を900とした場合のセッション継続時間は

  • AWSマネージメントコンソール : 15分
  • QuickSightコンソール : 12時間

となります。

おまけ

厄介なことに、IDフェデレーションによってQuickSightにサインインするユーザは、AWSコンソールにもサインインできてしまいます。

※AWSマネージメントコンソールへのサインインを防ぐ方法はありません。

ただし、引き受けさせるIAMロールの権限を絞っておけば、基本的には何もできない状態にはできます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "quicksight",
            "Effect": "Allow",
            "Action": [
                "quicksight:DescribeDashboard",
                "quicksight:ListDashboards"
            ],
            "Resource": "arn:aws:quicksight::123456789012:*"
        }
    ]
}

AWSマネージメントコンソールへのアクセスを許容し難い場合は、せめてもの対策として

  • IDプロバイダに割り当てるIAMロールの権限を最小限にする
  • SessionDurationの値を最小限にする

この辺は講じてもよいかもしれません。

以上です。

参考記事

コメント

タイトルとURLをコピーしました