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

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

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

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

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

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

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

注記

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

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

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

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

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

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

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

重要

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

  • CreateEnvironment

  • CreateSession

  • GetEnvironmentStatus

  • StartEnvironment

これらのアクションのいずれかがアタッチされたポリシーによって明示的に許可されていない場合、 を起動しようとすると 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 を使用して からファイルをダウンロードするために使用される署名付き Amazon S3 URLs を生成します。これは VPC 環境では使用できません。

なし

cloudshell:GetFileUploadUrls

CloudShell ウェブインターフェイス CloudShell を使用して を介してファイルをアップロードするために使用される署名付き Amazon S3 URLs を生成します。これは 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 VPC 環境用に作成された ENIsには ManagedByCloudShell キーがタグ付けされています) をクリーンアップ CloudShell するために必要です。このアクセス許可が有効になっていない場合は、 CloudShell VPC 環境を使用するたびに ENI リソースを手動でクリーンアップする必要があります。

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

次の例は、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" } } } ] }

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

特定の VPC へのユーザーアクセスを拒否するには、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" ] } } } ] }

特定の VPC へのユーザーアクセスを拒否するには、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" ] } } } ] }

特定の VPC へのユーザーアクセスを拒否するには、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 設定で環境の作成を許可する

特定の VPCsStringEqualsを使用して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" ] } } } ] }

特定の VPCsStringEqualsを使用して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" ] } } } ] }

特定の VPCsStringEqualsを使用して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 アイデンティティ (ユーザー、グループ、もしくはロール) にアタッチできます。

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