[小ネタ] Amazon S3 Storage Lensダッシュボードはrootユーザでは表示できない!

rootユーザではAmazon S3 Storage Lensの設定などは行えても、ダッシュボードを表示させることはできません。rootユーザで行えない操作はめずらしく、また普段遭遇することも少ないかと思うのでまとめておきます。
2021.07.10

はじめに

清水です。タイトルの通りですが、Amazon S3 Storage LensのダッシュボードはAWSアカウントのrootユーザでは表示できません!今回これを確認する機会があったので小ネタとしてまとめてみます。そもそもAWSでは、rootユーザはAWSアカウント作成時など特別なとき以外は使用しないのがベストプラクティスです。そのためrootユーザでS3 Storage Lensダッシュボードを参照する機会自体があまりないはずですが……。ふとしたきっかけで、rootユーザでS3 Storage Lensダッシュボードを表示しようとしたときにこの事実に気がつきました。あまり遭遇しないケースだからこそ、備忘録の意味も込めてまとめておきたいと思います。

Amazon S3 Storage Lensの簡単なおさらい

Amazon S3 Storage Lensは2020年11月にリリースされました、S3のストレージ使用状況やアクティビティなどを可視化してくれるサービスです。有料となる「高度なメトリクスと推奨事項」を使うことでコスト効率化やデータ保護のベストプラクティスなどが提示されます。標準メトリクスであれば無料で利用できるのも嬉しいポイントですね。

S3 Storage Lensは意識的に使っていなくても、無料料金範囲内でいい感じに働いてくれています。Amazon S3のマネジメントコンソールを開くと「Account snapshot」という項目にデータ量、オブジェクト数、平均オブジェクトサイズなどが表示されるようになりました。これがS3 Storage Lensの働きです。

さらにここから右上の[View Storage Lens dashboard]ボタンで進むと、デフォルトで用意されているダッシュボード「default-account-dashboard」で標準メトリクスのデータを参照できます。UIもイケてますね!

rootユーザでS3 Storage Lensを使おうとすると……

さて、ふとrootユーザでAWSマネジメントコンソールにログインした際に、このS3 Storage Lensを使用してアカウント内の合計データ量を確認しようとしてみました。マネジメントコンソールでS3の画面に遷移し、「Account snaphost」の項目で確認しようとしてみます。すると!以下のようにエラーが表示されてしまいました、これにはビックリ!

rootユーザの認証情報ではS3 Storage Lensのダッシュボードは表示ができない旨、記載があります。ビックリしながら右上、[View Storage Lends dashboard]ボタンを押してみますが、やっぱり表示はできません。同様のエラーが表示されてしまいます。

確認のためS3ユーザガイドも参照してみましたが、エラー内容に表示されていた通り、ダッシュボードの表示にrootユーザの認証情報が使用できない点がバッチリ記載されていました。

rootユーザでもダッシュボードの設定などは可能

そのままrootユーザで「default-account-dashboard」の[View dashboard configuration]ボタンを押してみます。遷移先ページのdashboard configuration画面は表示できるようですね。また[Disable]ボタンでのダッシュボードの無効化、[Edit]ボタンからの再有効化なども可能でした。

またダッシュボードの新規作成についてもrootユーザから行うこと可能でした。(「my-dashboard」を新規に作成しています。)しかしこのダッシュボードも表示はできない、という具合です。

このエラー画面に表示されていますが、あくまで実行できないのはs3:GetStorageLensDashboardであり、そのほか(上記画面であればs3:ListStorageLensConfigurationss3:GetStorageLensConfiguration)については実行できそうですね。

この確認のため、rootユーザでアクセスキーを発行しAWS CLIを使って操作してみます。s3control list-storage-lens-configurationsならびにs3control get-storage-lens-configurations3control delete-storage-lens-configurationsは以下の通り実行が可能でした。s3:GetStorageLensDashboard相当のAWS CLIコマンドも試してみたかったのですが、こちらはコマンドが存在しないようでした。おそらくAPIも公開がされていなのかと思います。(APIリファレンスに記載がなさそうです。)

% aws sts get-caller-identity
{
    "UserId": "123456789012",
    "Account": "123456789012",
    "Arn": "arn:aws:iam::123456789012:root"
}

% aws s3control list-storage-lens-configurations \
  --account-id 123456789012 \
  --region us-east-1
{
    "StorageLensConfigurationList": [
        {
            "Id": "default-account-dashboard",
            "StorageLensArn": "arn:aws:s3:us-east-1:123456789012:storage-lens/default-account-dashboard",
            "HomeRegion": "us-east-1",
            "IsEnabled": true
        },
        {
            "Id": "my-dashboard",
            "StorageLensArn": "arn:aws:s3:us-east-1:123456789012:storage-lens/my-dashboard",
            "HomeRegion": "us-east-1",
            "IsEnabled": true
        }
    ]
}

% aws s3control get-storage-lens-configuration \
    --config-id my-dashboard \
    --account-id 123456789012 \
    --region us-east-1
{
    "StorageLensConfiguration": {
        "Id": "my-dashboard",
        "AccountLevel": {
            "ActivityMetrics": {
                "IsEnabled": true
            },
            "BucketLevel": {
                "ActivityMetrics": {
                    "IsEnabled": true
                }
            }
        },
        "IsEnabled": true,
        "StorageLensArn": "arn:aws:s3:us-east-1:123456789012:storage-lens/my-dashboard"
    }
}

% aws s3control delete-storage-lens-configuration \
  --config-id my-dashboard \
  --account-id 123456789012 \
  --region us-east-1

% aws s3control list-storage-lens-configurations \
    --account-id 123456789012 \
    --region us-east-1
{
    "StorageLensConfigurationList": [
        {
            "Id": "default-account-dashboard",
            "StorageLensArn": "arn:aws:s3:us-east-1:123456789012:storage-lens/default-account-dashboard",
            "HomeRegion": "us-east-1",
            "IsEnabled": true
        }
    ]
}

まとめ

AWSのrootユーザの認証情報だと、Amazon S3 Storage Lensの設定などは行えても、ダッシュボードを表示させることはできません。基本的にrootユーザは何でもできてしまうと考えていたので、rootユーザでできないことがあることにビックリしました。他にrootユーザでできないことといえば……、スイッチロールぐらいでしょうか。これが関係しているのか。もしくは本エントリでは確認できていませんが、S3 Storage LensのAWS Organizationとの連携も関係あるのでしょうか。具体的な理由は判明しませんが、いずれにせよ、AWSのベストプラクティスに従い、IAMユーザを作成してこちらで日常の操作を行なっていれば遭遇しない事象だと思います。rootユーザの利用は最小限にとどめ、きちんとIAMユーザを使用しましょう。