ReadOnlyAccess では AWS CloudShell は実行できない

記事タイトルとURLをコピーする

営業部 佐竹です。
本日は稀に質問を頂くことがある表題の件について、ちょっとした共有目的で記載しています。

AWS CloudShell とは

AWS CloudShell は、ブラウザベースのシェルを提供するサービスです。

ようは、マネジメントコンソールからそのまま AWS CLI を実行できるブラウザが現われるサービスとなっています。

2020年12月のリリース直後から非常に評判もよく、利用頻度も高いサービスになっております。というのも、CLI を実行するためだけに Amazon Linux 環境を EC2 インスタンスとして構築&保持している私のようなメンバーもいたわけでして、AWS 側がマネージドサービスとして CLI を実行可能な環境を提供してくれるとは「なんて素晴らしいサービスなんだ」と思わされました。

aws.amazon.com

しかも、本サービスの利用料は無料です。

CloudShell 実行時の権限はどうなるのか?

さて、CloudShell から CLI を実行する場合に、CloudShell 自体はどのような権限セット(ポリシー)で動作するのでしょうか?

前述しました、EC2 インスタンスで実行する場合においては、その権限はインスタンスに紐づく IAM Role に依存していました。

では、CloudShell の場合はどうなるのでしょうか?

答えは、マネジメントコンソールへログインしている IAM ユーザもしくは IAM Role の権限に依存します。このため、権限設計を IAM ユーザ/ IAM Role に寄せれるのもポイントです。

CloudShell の実行に必要な権限は?

そんな便利サービスである CloudShell ですが、そのものの実行に必要な権限はどうなっているでしょうか?

AWS の公式ドキュメント を参照するに、以下の4つの権限が必要となっています。

  1. CreateEnvironment
  2. CreateSession
  3. GetEnvironmentStatus
  4. StartEnvironment

ReadOnlyAccess では実行できない

AWS のマネジメントコンソールに対して、「参照のみの権限を付与したい」という場合に最も利用されることが多いのが ReadOnlyAccess という AWS マネージドポリシーです。Arn は arn:aws:iam::aws:policy/ReadOnlyAccess となっています。

この権限では、マネジメントコンソールから更新や削除などの作業ができず、名前の通り参照のみが可能となっています。

そして本 ReadOnlyAccess のみをポリシーとして付与された IAM ユーザは、CloudShell を起動することができません

以下は実際にマネジメントコンソールから CloudShell を起動した場合に表示されるエラーです。

f:id:swx-satake:20211006222102p:plain
Unable to start the environment. You don't have required permissions. Ask your IAM administrator for access to AWS CloudShell.

「ReadOnlyAccess で CloudShell を起動しても、参照しかできないのだから CloudShell を起動できても良いのでは?」という話もあるのですが、先に記載した通り CloudShell は4つの権限がないと実行環境となるブラウザが起動できません。そして ReadOnlyAccess にはそれら4つの権限が含まれていないのです。

AWSCloudShellFullAccess を合わせて付与する

先に記載した通り ReadOnlyAccess のみの権限付与では CloudShell の利用は不可となります。

もし CloudShell を ReadOnly(RO) と定義している IAM ユーザ/IAM Role でも利用されたい場合は AWSCloudShellFullAccess という AWS マネージドポリシーを合わせて付与することを推奨いたします。このポリシーの Arn は arn:aws:iam::aws:policy/AWSCloudShellFullAccess となります。

AWSCloudShellFullAccess

参考まで、AWSCloudShellFullAccess の JSON を記載します。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "cloudshell:*"
            ],
            "Effect": "Allow",
            "Resource": "*"
        }
    ]
}

まとめ

f:id:swx-satake:20211006224848p:plain:w150

本日は、AWS マネージドポリシーである ReadOnlyAccess では、AWS CloudShell の実行環境(ブラウザ)が立ち上げられないという内容について記載しました。

またその解決策として、AWSCloudShellFullAccess の権限付与にて回避できると記載しました。

ReadOnlyAccessAWSCloudShellFullAccess を組み合わせれば、CloudShell と AWS CLI を活用して調査が非常にやりやすくなりますので、これらの組み合わせが今後の ReadOnly ユーザや Role の権限セットになっていくのではと考えております。

簡単ですが、以上となります。

では、またお会いしましょう。

佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ

マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023 Japan AWS Top Engineers/2020-2023 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。