View a markdown version of this page

IAM ポリシーによるAWS CloudShellアクセスと使用状況の管理 - AWS CloudShell

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

IAM ポリシーによるAWS CloudShellアクセスと使用状況の管理

が提供できるアクセス管理リソースを使用するとAWS Identity and Access Management、管理者は IAM ユーザーにアクセス許可を付与できます。これにより、これらのユーザーは環境の機能にアクセスしてAWS CloudShell使用できます。管理者は、ユーザーがシェル環境で実行できるアクションをきめ細かく指定するポリシーを作成することもできます。

管理者がユーザーにアクセス権を付与する最も簡単な方法は、AWSマネージドポリシーを使用することです。AWS マネージドポリシーは、AWSで作成および管理されるスタンドアロンポリシーです。の次のAWS管理ポリシーを IAM ID にアタッチAWS CloudShellできます。

  • AWS CloudShellFullAccess:AWS CloudShellのすべての機能にフルアクセスできるアクセス許可を付与します。

AWS CloudShellFullAccess ポリシーでは、ワイルドカード (*) 文字を使用して、IAM アイデンティティ (ユーザー、ロール、またはグループ) に CloudShell および機能へのフルアクセスを許可します。このポリシーの詳細については、「AWSマネージドポリシーユーザーガイド」の「AWS CloudShellFullAccess」を参照してください。

注記

以下のAWS管理ポリシーを持つ IAM ID は、CloudShell を起動することもできます。ただし、これらのポリシーは広範な許可を付与します。そのため、 IAM ユーザーのジョブロールに必須な場合のみ、これらのポリシーを許可することを推奨します。

  • 管理者: IAM ユーザーにフルアクセスを提供し、 のすべてのサービスとリソースにアクセス許可を委任できるようにしますAWS。

  • 開発者パワーユーザー: IAM ユーザーがアプリケーション開発タスクを実行し、AWSアプリケーション開発をサポートするリソースとサービスを作成および設定できるようにします。

マネージドポリシーをアタッチする方法の詳細については、IAM ユーザーガイドのIAM アイデンティ許可の追加 (コンソール)を参照してください。

カスタムポリシーAWS CloudShellを使用して で許可されるアクションを管理する

IAM ユーザーが CloudShell で実行できるアクションを管理するには、CloudShellPolicy マネージドポリシーをテンプレートとして使用するカスタムポリシーを作成します。または、関連する IAM アイデンティティ (ユーザー、グループ、もしくはロール) に埋め込まれているインラインポリシーを編集します。

例えば、IAM ユーザーに CloudShell へのアクセスを許可する一方で、AWS マネジメントコンソールへのログインに使用する CloudShell 環境の認証情報の転送を禁止できます。

重要

AWS CloudShellから を起動するにはAWS マネジメントコンソール、IAM ユーザーに次のアクションのアクセス許可が必要です。

  • CreateEnvironment

  • CreateSession

  • GetEnvironmentStatus

  • StartEnvironment

これらのアクションのひとつがアタッチされたポリシーによって明示的に許可されていない場合、CloudShell の起動時に IAM アクセス許可エラーが返されます。

AWS CloudShellアクセス許可
名前 付与されたアクセス許可の説明 CloudShell の起動に必要か?

cloudshell:CreateEnvironment

CloudShell 環境を作成し、CloudShell セッションの開始時にレイアウトを取得して、バックエンドのウェブアプリケーションから現在のレイアウトを保存します。このアクセス許可は、「CloudShell の IAM ポリシーの例」で説明しているように *Resource の値としてのみ期待します。

はい

cloudshell:CreateSession

から CloudShell 環境に接続しますAWS マネジメントコンソール。

はい

cloudshell:GetEnvironmentStatus

CloudShell 環境のステータスを読み取ります。

はい

cloudshell:DeleteEnvironment

CloudShell 環境を削除します。

いいえ

cloudshell:GetFileDownloadUrls

CloudShell ウェブインターフェースを使用して CloudShell 経由でファイルをダウンロードする際に使用する、事前署名された Amazon S3 URL を生成します。これは VPC 環境では使用できません。

いいえ

cloudshell:GetFileUploadUrls

CloudShell ウェブインターフェースを使用して CloudShell 経由でファイルをアップロードする際に使用する、事前署名された Amazon S3 URL を生成します。これは VPC 環境では使用できません。

いいえ

cloudshell:DescribeEnvironments

環境について説明します。

いいえ

cloudshell:PutCredentials

へのログインに使用される認証情報を CloudShell に転送AWS マネジメントコンソールします。

いいえ

cloudshell:StartEnvironment

停止している CloudShell 環境を起動します。

はい

cloudshell:StopEnvironment

実行中の CloudShell 環境を停止します。

いいえ

cloudshell:ApproveCommand

他のAWS Service コンソールから CloudShell に送信されたコマンドを承認します。 いいえ

CloudShell の IAM ポリシーの例

次の例は、CloudShell へのアクセス可能なユーザーを制限するためのポリシーの作成方法を示しています。またこの例は、シェル環境で実行可能なアクションも示しています。

次のポリシーでは、CloudShell とその機能へのアクセスの完全拒否を強制的に実行します。

JSON
{ "Version":"2012-10-17", "Statement": [{ "Sid": "DenyCloudShell", "Effect": "Deny", "Action": [ "cloudshell:*" ], "Resource": "*" }] }

次のポリシーでは、IAM ユーザーが CloudShell にアクセスすることを許可しますが、ファイルのアップロードとダウンロード用の署名済み URL を生成することはブロックします。ユーザーは、例えば wget のようなクライアントを使用して、環境に向けておよび環境からファイルを転送することができます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyUploadDownload", "Effect": "Deny", "Action": [ "cloudshell:GetFileDownloadUrls", "cloudshell:GetFileUploadUrls" ], "Resource": "*" }] }

次のポリシーでは、IAM ユーザーに CloudShell へのアクセスを許可します。ただし、このポリシーは、 へのログインに使用した認証情報が CloudShell AWS マネジメントコンソール環境に転送されないようにします。このポリシーを持つ IAM ユーザーは、CloudShell 内で認証情報を手動で設定する必要があります。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowUsingCloudshell", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "DenyCredentialForwarding", "Effect": "Deny", "Action": [ "cloudshell:PutCredentials" ], "Resource": "*" }] }

次のポリシーでは、IAM ユーザーにAWS CloudShell環境の作成を許可します。

JSON
{ "Version":"2012-10-17", "Statement": [{ "Sid": "CloudShellUser", "Effect": "Allow", "Action": [ "cloudshell:CreateEnvironment", "cloudshell:CreateSession", "cloudshell:GetEnvironmentStatus", "cloudshell:StartEnvironment" ], "Resource": "*" }] }

CloudShell の VPC 環境を作成および使用するために必要な IAM アクセス許可

CloudShell の VPC 環境を作成して使用するには、IAM 管理者が VPC 固有の Amazon EC2 アクセス許可へのアクセスを有効にする必要があります。このセクションでは、VPC 環境の作成と使用に必要な Amazon EC2 アクセス許可を一覧表示します。

VPC 環境を作成するには、ロールに割り当てる IAM ポリシーに、以下の Amazon EC2 アクセス許可を含める必要があります。

  • ec2:DescribeVpcs

  • ec2:DescribeSubnets

  • ec2:DescribeSecurityGroups

  • ec2:DescribeDhcpOptions

  • ec2:DescribeNetworkInterfaces

  • ec2:CreateTags

  • ec2:CreateNetworkInterface

  • ec2:CreateNetworkInterfacePermission

以下も含めることをお勧めします。

  • ec2:DeleteNetworkInterface

注記

このアクセス許可は必須ではありませんが、CloudShell で作成した ENI リソース (CloudShell の VPC 環境用に作成した ENI には ManagedByCloudShell キーのタグが付きます) をクリーンアップするために必要です。このアクセス許可が有効になっていない場合は、CloudShell の各 VPC 環境の使用後に ENI リソースを手動でクリーンアップする必要があります。

CloudShell へのフルアクセス (VPC へのアクセスを含む) を許可する IAM ポリシー

次の例は、CloudShell へのフルアクセス (VPC へのアクセスを含む) を許可する方法を示しています。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCloudShellOperations", "Effect": "Allow", "Action": [ "cloudshell:*" ], "Resource": "*" }, { "Sid": "AllowDescribeVPC", "Effect": "Allow", "Action": [ "ec2:DescribeDhcpOptions", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeVpcs" ], "Resource": "*" }, { "Sid": "AllowCreateTagWithCloudShellKey", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "ec2:CreateAction": "CreateNetworkInterface" }, "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfaceWithSubnetsAndSG", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*" ] }, { "Sid": "AllowCreateNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": "ManagedByCloudShell" } } }, { "Sid": "AllowCreateNetworkInterfacePermissionWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:CreateNetworkInterfacePermission" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } }, { "Sid": "AllowDeleteNetworkInterfaceWithCloudShellTag", "Effect": "Allow", "Action": [ "ec2:DeleteNetworkInterface" ], "Resource": "arn:aws:ec2:*:*:network-interface/*", "Condition": { "StringEquals": { "aws:ResourceTag/ManagedByCloudShell": "" } } } ] }

VPC 環境での IAM 条件キーの使用

VPC 設定で CloudShell 固有の条件キーを使用して、VPC 環境に追加のアクセス許可コントロールを提供できます。また、VPC 環境で使用できるサブネットとセキュリティグループ、および使用できないサブネットとセキュリティグループを指定することもできます。

CloudShell は IAM ポリシーで以下の条件キーをサポートしています。

  • CloudShell:VpcIds – 1 つ以上の VPC を許可または拒否する

  • CloudShell:SubnetIds – 1 つ以上のサブネットを許可または拒否する

  • CloudShell:SecurityGroupIds – 1 つ以上のセキュリティグループを許可または拒否する

注記

ユーザーに CloudShell のパブリック環境へのアクセス権がある場合、ユーザーのアクセス許可を変更して cloudshell:createEnvironment アクションに制限を追加しても、ユーザーは依然として既存のパブリック環境にアクセスできます。ただし、この制限を追加して IAM ポリシーを変更し、既存のパブリック環境へのユーザーアクセスを無効にしたい場合は、まず、IAM ポリシーを更新して、この制限を含める必要があります。次に、アカウントのすべての CloudShell ユーザーに、CloudShell ウェブユーザーインターフェイスを使用して既存のパブリック環境を手動で確実に削除してもらいます ([アクション][CloudShell 環境を削除])。

VPC 設定の条件キーを使用したポリシーの例

以下の例は、VPC 設定で条件キーを使用する方法を示しています。必要な制限を含むポリシーステートメントを作成したら、このポリシーステートメントをターゲットのユーザーまたはロールに追加します。

ユーザーに VPC 環境の作成のみを許可し、パブリック環境の作成を拒否する

ユーザーに VPC 環境の作成のみを許可するには、次の例に示すように [拒否] アクセス許可を使用します。

{ "Statement": [ { "Sid": "DenyCloudShellNonVpcEnvironments", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "Null": { "cloudshell:VpcIds": "true" } } } ] }

特定の VPC、サブネット、セキュリティグループへのアクセスをユーザーに拒否する

特定の VPC へのアクセスをユーザーに拒否するには、StringEquals を使用して cloudshell:VpcIds 条件の値を確認します。次の例では、vpc-1 および vpc-2 へのアクセスをユーザーに拒否します。

特定の VPC へのアクセスをユーザーに拒否するには、StringEquals を使用して cloudshell:SubnetIds 条件の値を確認します。次の例では、subnet-1 および subnet-2 へのアクセスをユーザーに拒否します。

特定の VPC へのアクセスをユーザーに拒否するには、StringEquals を使用して cloudshell:SecurityGroupIds 条件の値を確認します。次の例では、sg-1 および sg-2 へのアクセスをユーザーに拒否します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnforceOutOfSecurityGroups", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }

特定の VPC 設定で環境を作成することをユーザーに許可する

特定の VPC にアクセスすることをユーザーに許可するには、StringEquals を使用して cloudshell:VpcIds 条件の値を確認します。次の例では、vpc-1 および vpc-2 にアクセスすることをユーザーに許可します。

特定の VPC にアクセスすることをユーザーに許可するには、StringEquals を使用して cloudshell:SubnetIds 条件の値を確認します。次の例では、subnet-1 および subnet-2 にアクセスすることをユーザーに許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSubnets", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SubnetIds": [ "subnet-1", "subnet-2" ] } } } ] }

特定の VPC にアクセスすることをユーザーに許可するには、StringEquals を使用して cloudshell:SecurityGroupIds 条件の値を確認します。次の例では、sg-1 および sg-2 にアクセスすることをユーザーに許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificSecurityGroup", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "cloudshell:SecurityGroupIds": [ "sg-1", "sg-2" ] } } } ] }

にアクセスするためのアクセス許可AWS のサービス

CloudShell は、AWS マネジメントコンソールへのサインインに使用された IAM 認証情報を使用します。

注記

へのサインインに使用した IAM 認証情報を使用するにはAWS マネジメントコンソール、 アクセスcloudshell:PutCredentials許可が必要です。

CloudShell のこの事前認証機能は、AWS CLIを使用するうえで便利です。ただし、IAM ユーザーには、コマンドラインから呼び出AWS のサービスされる に対する明示的なアクセス許可が必要です。

例えば、IAM ユーザーが Amazon S3 バケットを作成し、ファイルをオブジェクトとしてそこにアップロードする必要があるとします。これらのアクションを明示的に許可するポリシーを作成することができます。IAM コンソールには、JSON 形式のポリシードキュメントを作成する手順を説明するインタラクティブなビジュアルエディタが用意されています。ポリシーを作成した後、関連する IAM アイデンティティ (ユーザー、グループ、もしくはロール) にアタッチできます。

マネージドポリシーをアタッチする方法の詳細については、IAM ユーザーガイドのIAM アイデンティ許可の追加 (コンソール)を参照してください。

CloudShell の Amazon Q CLI 機能へのアクセス許可

CloudShell でインライン提案、チャット、翻訳などの Amazon Q CLI 機能を使用するには、必要な IAM アクセス許可があることを確認してください。CloudShell で Amazon Q CLI 機能にアクセスできない場合は、管理者に連絡して必要な IAM アクセス許可を得てください。詳細については、「Amazon Q Developer ユーザーガイド」の「Amazon Q Developer のアイデンティティベースのポリシー例」を参照してください。