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

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

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

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

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

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

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

注記

IAM 以下の AWS マネージドポリシーを持つ ID は、 を起動することもできます CloudShell。ただし、これらのポリシーは広範な許可を付与します。したがって、これらのポリシーは、IAMユーザーのジョブロールに不可欠な場合にのみ付与することをお勧めします。

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

  • デベロッパーパワーユーザー : IAMアプリケーション開発タスクを実行し、 AWS 認識されたアプリケーション開発をサポートするリソースとサービスを作成および設定できます。

マネージドポリシーのアタッチの詳細については、 IAM ユーザーガイドIAM「ID アクセス許可の追加 (コンソール)」を参照してください。

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

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

例えば、IAMユーザーに へのアクセスを許可できますが CloudShell、 へのログインに使用される CloudShell 環境認証情報の転送を防ぐことができます AWS Management Console。

重要

AWS CloudShell から を起動するには AWS Management Console、IAM次のアクションに対するアクセス許可が必要です。

  • CreateEnvironment

  • CreateSession

  • GetEnvironmentStatus

  • StartEnvironment

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

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

cloudshell:CreateEnvironment

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

可能

cloudshell:CreateSession

から CloudShell 環境に接続します AWS Management Console。

可能

cloudshell:GetEnvironmentStatus

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

可能

cloudshell:DeleteEnvironment

CloudShell 環境を削除します。

不可

cloudshell:GetFileDownloadUrls

CloudShell ウェブインターフェイス CloudShell を使用して を通じてファイルをダウンロードURLsするために使用する署名付き Amazon S3 を生成します。これはVPC環境では利用できません。

不可

cloudshell:GetFileUploadUrls

CloudShell ウェブインターフェイス CloudShell を使用して を介してファイルをアップロードするURLsために使用される署名付き Amazon S3 を生成します。これはVPC環境では利用できません。

不可

cloudshell:DescribeEnvironments

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

不可

cloudshell:PutCredentials

へのログインに使用される認証情報を に転送 AWS Management Console します CloudShell。

不可

cloudshell:StartEnvironment

停止している CloudShell 環境を開始します。

可能

cloudshell:StopEnvironment

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

不可

のIAMポリシーの例 CloudShell

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

以下のポリシーでは、 CloudShell とその機能へのアクセスを完全に拒否します。

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

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

{ "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 Management Console されないようにします。IAM このポリシーを持つユーザーは、 内で認証情報を手動で設定する必要があります CloudShell。

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

次のポリシーでは、IAMユーザーが AWS CloudShell 環境を作成することを許可しています。

{ "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

注記

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

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

次の例は、 へのアクセスを含むVPC、 への完全なアクセス許可を有効にする方法を示しています CloudShell。

{ "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 つ以上の許可または拒否 VPCs

  • 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" } } } ] }

特定の VPCs、サブネット、またはセキュリティグループへのアクセスを拒否する

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceOutOfVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Deny", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

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

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Sid": "EnforceStayInSpecificVpc", "Action": [ "cloudshell:CreateEnvironment" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "cloudshell:VpcIds": [ "vpc-1", "vpc-2" ] } } } ] }

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

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

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

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

アクセス許可 AWS のサービス

CloudShell は、 へのサインインに使用したIAM認証情報を使用します AWS Management Console。

注記

へのサインインに使用したIAM認証情報を使用するには AWS Management Console、 アクセスcloudshell:PutCredentials許可が必要です。

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

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

マネージドポリシーのアタッチの詳細については、 IAM ユーザーガイドIAM「ID アクセス許可の追加 (コンソール)」を参照してください。