営業部 佐竹です。
本日は稀に質問を頂くことがある表題の件について、ちょっとした共有目的で記載しています。
AWS CloudShell とは
AWS CloudShell は、ブラウザベースのシェルを提供するサービスです。
ようは、マネジメントコンソールからそのまま AWS CLI を実行できるブラウザが現われるサービスとなっています。
2020年12月のリリース直後から非常に評判もよく、利用頻度も高いサービスになっております。というのも、CLI を実行するためだけに Amazon Linux 環境を EC2 インスタンスとして構築&保持している私のようなメンバーもいたわけでして、AWS 側がマネージドサービスとして CLI を実行可能な環境を提供してくれるとは「なんて素晴らしいサービスなんだ」と思わされました。
しかも、本サービスの利用料は無料です。
CloudShell 実行時の権限はどうなるのか?
さて、CloudShell から CLI を実行する場合に、CloudShell 自体はどのような権限セット(ポリシー)で動作するのでしょうか?
前述しました、EC2 インスタンスで実行する場合においては、その権限はインスタンスに紐づく IAM Role に依存していました。
では、CloudShell の場合はどうなるのでしょうか?
答えは、マネジメントコンソールへログインしている IAM ユーザもしくは IAM Role の権限に依存します。このため、権限設計を IAM ユーザ/ IAM Role に寄せれるのもポイントです。
CloudShell の実行に必要な権限は?
そんな便利サービスである CloudShell ですが、そのものの実行に必要な権限はどうなっているでしょうか?
AWS の公式ドキュメント を参照するに、以下の4つの権限が必要となっています。
- CreateEnvironment
- CreateSession
- GetEnvironmentStatus
- StartEnvironment
ReadOnlyAccess では実行できない
AWS のマネジメントコンソールに対して、「参照のみの権限を付与したい」という場合に最も利用されることが多いのが ReadOnlyAccess
という AWS マネージドポリシーです。Arn は arn:aws:iam::aws:policy/ReadOnlyAccess
となっています。
この権限では、マネジメントコンソールから更新や削除などの作業ができず、名前の通り参照のみが可能となっています。
そして本 ReadOnlyAccess
のみをポリシーとして付与された IAM ユーザは、CloudShell を起動することができません。
以下は実際にマネジメントコンソールから 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": "*" } ] }
まとめ
本日は、AWS マネージドポリシーである ReadOnlyAccess
では、AWS CloudShell の実行環境(ブラウザ)が立ち上げられないという内容について記載しました。
またその解決策として、AWSCloudShellFullAccess
の権限付与にて回避できると記載しました。
ReadOnlyAccess
と AWSCloudShellFullAccess
を組み合わせれば、CloudShell と AWS CLI を活用して調査が非常にやりやすくなりますので、これらの組み合わせが今後の ReadOnly ユーザや Role の権限セットになっていくのではと考えております。
簡単ですが、以上となります。
では、またお会いしましょう。
佐竹 陽一 (Yoichi Satake) エンジニアブログの記事一覧はコチラ
マネージドサービス部所属。AWS資格全冠。2010年1月からAWSを利用してきています。2021-2022 AWS Ambassadors/2023-2024 Japan AWS Top Engineers/2020-2024 All Certifications Engineers。AWSのコスト削減、最適化を得意としています。