0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS CloudShellを本気で理解する

0
Last updated at Posted at 2025-12-23

AWS CloudShellの、特にネットワークとIAM権限周りを調査しました。

⚡TL;DR

  • AWS CloudShell は AWS マネジメントコンソールから即使える事前認証済みシェル
  • インバウンド通信不可 / アウトバウンド専用 の安全設計
  • VPC 統合 CloudShell では指定 VPC / サブネットに ENI が作成される
  • パブリックサブネットでも NAT がないとインターネットに出られない
  • IAM では cloudshell:* に加え EC2 ネットワーク権限が必須
  • 条件キーにより VPC を強制指定した CloudShell 設計 が可能

🔰はじめに

AWS CloudShell は、AWS マネジメントコンソールから直接起動できる
ブラウザベースの Linux シェル環境 です。

CLI 用の EC2 を立てることなく、
AWS CLI や SDK を 即・安全に実行 できる点が評価されています。

本記事では、以下の公式情報をベースに、

  • ネットワーク設計
  • IAM 権限モデル
  • VPC 統合時の落とし穴

設計者視点 で解説します。


📝AWS CloudShell とは

AWS CloudShell は以下の特徴を持ちます。

  • Amazon Linux 2023 ベース
  • AWS CLI / git / Python / Node.js 等がプリインストール
  • コンソールログイン中の IAM 認証情報が自動注入
  • リージョンごとに 1GB の永続ストレージ(※VPC 環境除く)

公式ドキュメント:


🏢CloudShell のネットワークアーキテクチャ

デフォルト CloudShell(VPC 非指定)

重要なネットワーク特性

  • インバウンド通信 ❌
  • アウトバウンド通信 ⭕
  • パブリック IP ❌

これは公式に明言されています。

公式ドキュメント:

[Browser]
   ↓
[AWS Console]
   ↓
[CloudShell Environment]
   └─→ AWS API / Internet(Outbound Only)

この設計により、CloudShell は
踏み台用途でも極めて安全 です。


✅VPC 統合 CloudShell(高度な利用)

VPC 統合で何が起きるか

VPC 統合 CloudShell では、

  • 指定 VPC
  • 指定サブネット
  • 指定セキュリティグループ

を使って CloudShell 環境が起動されます。

AWS は裏側で ENI(Elastic Network Interface)を作成 します。

公式ドキュメント:


NAT がないとインターネットに出られない理由

CloudShell は パブリック IP を持たない ため、

  • パブリックサブネット
  • IGW あり

だけでは 外部通信不可 です。

公式に以下が明記されています。

VPC 環境の CloudShell でインターネットアクセスを行うには
NAT Gateway または NAT インスタンスが必要

公式ドキュメント:


VPC CloudShell の制限事項

  • IAM プリンシパルあたり 最大 2 環境
  • セキュリティグループは 最大 5 個
  • 永続ストレージなし
  • GUI からのファイルアップロード / ダウンロード不可

公式ドキュメント:


👑IAM 権限モデル

AWS 管理ポリシー(最短ルート)

AWSCloudShellFullAccess

公式ポリシー:


CloudShell 起動に必要な最低限の権限

cloudshell:CreateEnvironment
cloudshell:CreateSession
cloudshell:GetEnvironmentStatus
cloudshell:StartEnvironment

公式ドキュメント:


VPC 統合 CloudShell に必要な EC2 権限

ENI 作成のため、以下が必要です。

ec2:DescribeVpcs
ec2:DescribeSubnets
ec2:DescribeSecurityGroups
ec2:CreateNetworkInterface
ec2:CreateNetworkInterfacePermission
ec2:CreateTags

公式ドキュメント:


🕹️条件キーで CloudShell を制御する

CloudShell には専用条件キーがあります。

  • cloudshell:VpcIds
  • cloudshell:SubnetIds
  • cloudshell:SecurityGroupIds

公式ドキュメント:

例:特定 VPC のみ許可

"Condition": {
  "StringEquals": {
    "cloudshell:VpcIds": "vpc-12345678"
  }
}

ℹ️参考リンク(AWS 公式)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?