特定許可セットでサインインしたときにREADME的なページを見せたい【AWS IAM Identity Center】

2024.05.13

特定の許可セットでAWSアカウントにサインインしたときに、 「README的なページをまず見ていただく」ような仕組みを作りたいです。 READMEにはAWSアカウント利用のガイダンスや、 特定操作の案内を記載しておきたいです。

課題解決には リレーステート が役に立ちそうです。 これは許可セットの1パラメータです。 リレーステートを使うことで、 サインインした際に特定ページへリダイレクトできます。

ただし、このリレーステートで指定する URL は、AWSマネジメントコンソール内にある必要があります。 つまり、組織内で管理しているドキュメントサイト(Backlog wikiなど)には遷移できないです。

注記 リレーステート URL は AWS Management Console内にある必要があります。

– 引用: リレーステートの設定 - AWS IAM Identity Center

そこで今回はCloudWatchダッシュボードを使って READMEページを見せるように仕組んでみようと思います。 完成形(実現したい流れ)は以下のようなイメージです。

img

セットアップする

CloudWatch ダッシュボードを作成する

特定許可セットと紐づくメンバーアカウント上にCloudWatchダッシュボードを作成します。

今回はCloudFormation(AWS::CloudWatch::Dashboard)から作成しました。

AWSTemplateFormatVersion: 2010-09-09
Transform: AWS::LanguageExtensions
Parameters:
  DashboardName:
    Type: String
    Default: "README"
Resources:
  CWDashboard:
    Type: AWS::CloudWatch::Dashboard
    Properties:
      DashboardName: !Ref DashboardName
      DashboardBody:
        Fn::ToJsonString:
          widgets:
            - type: "text"
              x: 0
              y: 0
              width: 21
              height: 19
              properties:
                markdown: |
                  # README
                  はじめに見てください。

                  - [クラスメソッド発「やってみた」系技術メディア | DevelopersIO](https://dev.classmethod.jp/)

上記テンプレートを展開して、CloudWatchダッシュボードを作成します。 本ブログではダッシュボード名は README で進めます。

img

ダッシュボードのURLをメモしておいて、次に進みます。

https://ap-northeast-1.console.aws.amazon.com/cloudwatch/home?region=ap-northeast-1#dashboards/dashboard/README

許可セットを更新する

ダッシュボードを見せようと思っている許可セットを更新します。

更新点は以下2点です。

リレーステートの更新

リレーステートURLを先ほどメモした「ダッシュボードへのリンク」にします。

img

GetDashboard 許可の付与

ダッシュボードを見るための権限を付与しておく必要があります。 以下のようなインラインポリシーを設定しました。

img

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "cloudwatch:GetDashboard"
      ],
      "Resource": [
        "arn:aws:cloudwatch::*:dashboard/README"
      ]
    }
  ]
}

確認する

IAM Identity Center ポータルにログインして、 設定した許可セットでアクセスしてみます。

img

コンソールアクセス後、自動遷移してダッシュボードを表示できました。

img

おわりに

以上、許可セットのリレーステート活用例でした。 今回はCloudWatchダッシュボードを使いましたが、他に良い方法があれば教えていただければ嬉しいです。

複数アカウントへ割り当てられている許可セットの場合は、 CloudFormation StackSet を使って一括でCloudWatchダッシュボードを展開すると良いでしょう。

以上、参考になれば幸いです。

参考