AWS Cloud9
ユーザーガイド

AWS Cloud9 のアクセス権限リファレンス

AWS Cloud9 へのアクセスには、AWS アクセス認証情報が必要です。これらの認証情報には、AWS Cloud9 開発環境 の作成、共有、削除などの操作を行うアクセス権限が必要です。以下のセクションでは、AWS Identity and Access Management (IAM) を使用して AWS Cloud9 リソースへのアクセスを許可または拒否する方法と、これらのアクセス権限を認証情報にマップする方法について説明します。

概要

このセクションでは、AWS Cloud9 に適用される IAM 認証およびアクセス制御モデルの概要について説明します。

注記

一般的な使用シナリオやユーザータイプ向けに事前定義されたアクセス許可を設定するだけの場合は、「AWS Cloud9 での AWS 管理 (事前定義) ポリシー」までスキップしてください。

認証

AWS には、次のタイプのアイデンティティでアクセスできます。

AWS アカウントのルートユーザー

AWS にサインアップするときには、AWS アカウントに関連付けられた E メールアドレスとパスワードを提供します。これらはルート認証情報であり、これらの情報を使用すると、すべての AWS リソースへの完全なアクセスが可能になります。

重要

AWS のセキュリティ上のベストプラクティスとして、ルート認証情報は IAM 管理者ユーザーを持つ IAM 管理者グループを作成する場合にのみ使用してください。これは、ユーザーに AWS アカウントへの完全なアクセス権限を付与するグループです。その後、この管理者ユーザーを使用して、制限されたアクセス権限を持つ他の IAM ユーザーとロールを作成できます。詳細については、IAM ユーザーガイド の「個別の IAM ユーザーの作成 (IAM のベストプラクティス)」および「最初の IAM 管理者のユーザーおよびグループの作成」を参照してください。

IAM ユーザー

IAM ユーザーとは、簡単に述べると、特定のカスタム権限 (AWS Cloud9 開発環境 を作成するアクセス権限など) を持つ AWS アカウント内のアイデンティティです。IAM のユーザー名とパスワードを使用して、AWS Cloud9 コンソール、AWS マネジメントコンソール、AWS フォーラム、AWS サポート サポートセンターなどのセキュリティで保護された AWS ウェブページにサインインできます。

ユーザー名とパスワードに加えて、各ユーザーのアクセスキーを生成することもできます。これらのキーは、いずれかの AWS SDK、AWS Command Line Interface (AWS CLI)、または aws-shell を通じて、プログラムで AWS のサービスにアクセスするときに使用します。AWS SDK、AWS CLI、および aws-shell では、これらのアクセスキーを使用してリクエストが暗号で署名されます。これらのツールを使用しない場合は、リクエストを自分で署名する必要があります。AWS Cloud9 では、署名バージョン 4 がサポートされています。これは、インバウンド API リクエストを認証するためのプロトコルです。リクエストの認証の詳細については、『アマゾン ウェブ サービス全般のリファレンス』の「署名バージョン 4 の署名プロセス」を参照してください。

IAM ロール

IAM ロールは、アカウントで作成できる別の IAM アイデンティティであり、特定のアクセス権限を持ちます。これは IAM ユーザーに似ていますが、特定のユーザーに関連付けられていません。IAM ロールでは、AWS のサービスおよびリソースにアクセスできる一時的なアクセスキーを取得することができます。IAM ロールと一時的な認証情報は、次の状況で役立ちます。

AWS サービスへのアクセス

アカウントの IAM ロールを使用して、アカウントのリソースにアクセスするための権限を AWS のサービスに付与できます。たとえば、お客様に代わって Amazon S3 バケットにアクセスし、バケットに保存されたデータを Amazon Redshift にロードすることを AWS Lambda に許可するロールを作成できます。詳細については、『IAM ユーザーガイド』の「AWS のサービスにアクセス権限を委任するロールの作成」を参照してください。

Amazon EC2 で実行中のアプリケーション

アクセスキーを Amazon EC2 インスタンス内に保存して、このインスタンスで実行されるアプリケーションの AWS API リクエストに使用できますが、その代わりに IAM ロールを使用してアプリケーションの一時認証情報を管理できます。AWS ロールを Amazon EC2 インスタンスに割り当て、そのすべてのアプリケーションでの使用を許可するには、インスタンスにアタッチされたインスタンスプロファイルを作成します。インスタンスプロファイルにはロールが含まれ、Amazon EC2 インスタンスで実行されるプログラムは一時認証情報を取得することができます。詳細については、IAM ユーザーガイド の「インスタンスプロファイルを作成して使用し一時認証情報を管理する」と「Amazon EC2 インスタンスで実行されるアプリケーションに IAM ロールを使用してアクセス権限を付与する」を参照してください。

注記

環境 に接続する Amazon EC2 インスタンスにインスタンスプロファイルをアタッチする代わりに、AWS Cloud9 では、ユーザーに代わって EC2 環境 で一時認証情報を自動的にセットアップして管理できます。詳細については、「AWS 管理の一時認証情報」を参照してください。

フェデレーティッドユーザーアクセス

IAM ユーザーを作成する代わりに、AWS Directory Service、エンタープライズユーザーディレクトリ、またはウェブ ID プロバイダの既存のユーザー ID を使用できます。このようなユーザーはフェデレーティッドユーザーと呼ばれます。AWS では、ID プロバイダーを通じてアクセスがリクエストされたとき、フェデレーティッドユーザーにロールを割り当てます。詳細については、IAM ユーザーガイド の「フェデレーティッドユーザーとロール」を参照してください。

アクセスコントロール

有効な認証情報があればリクエストを認証できますが、許可を持っていないかぎり AWS Cloud9 リソースの作成やアクセスはできません。たとえば、AWS Cloud9 開発環境 を作成、共有、または削除するためのアクセス権限が必要です。

すべての AWS リソースは AWS アカウントによって所有され、リソースの作成またはアクセスは、アクセス権限のポリシーによって管理されます。アカウント管理者は、IAM ID (ユーザー、グループ、ロール) にアクセス権限ポリシーをアタッチできます。

アクセス許可を付与するときは、アクセス許可を取得するユーザー、アクセスできるリソース、およびそれらのリソースに対して実行できるアクションを決定します。

AWS Cloud9 リソースおよびオペレーション

AWS Cloud9 では、プライマリリソースは AWS Cloud9 開発環境 です。ポリシーで Amazon リソースネーム (ARN) を使用して、ポリシーを適用するリソースを識別します。以下の表に 環境 ARN を示します。詳細については、アマゾン ウェブ サービス全般のリファレンス の「Amazon リソースネーム (ARN) と AWS サービスの名前空間」を参照してください。

リソースタイプ ARN 形式

環境

arn:aws:cloud9:REGION_ID:ACCOUNT_ID:environment:ENVIRONMENT_ID

特定リージョンの特定アカウントが所有するすべての 環境 リソース

arn:aws:cloud9:REGION_ID:ACCOUNT_ID:environment:*

特定リージョンの特定アカウントが所有するすべての 環境 リソース

arn:aws:cloud9:REGION_ID:ACCOUNT_ID:*

アカウントとリージョンに関係なく、すべて AWS Cloud9 リソース

arn:aws:cloud9:*

たとえば、以下の要領で ARN を使用して、ステートメント内で特定の 環境 を指定することができます。

"Resource": "arn:aws:cloud9:us-east-2:123456789012:environment:70d899206236474f9590d93b7c41dfEX"

すべてのリソースを指定するには、次のように * エレメント内でワイルドカード文字 (Resource) を使用します。

"Resource": "*"

1 つのステートメントで複数のリソースを指定するには、次のように ARN をカンマで区切ります。

"Resource": [ "arn:aws:cloud9:us-east-2:123456789012:environment:70d899206236474f9590d93b7c41dfEX", "arn:aws:cloud9:us-east-2:123456789012:environment:81e900317347585a0601e04c8d52eaEX" ]

AWS Cloud9 には、AWS Cloud9 リソースを操作する一連のオペレーションが用意されています。リストについては、「AWS Cloud9 の権限リファレンス」を参照してください。

リソース所有権について

AWS アカウントは、誰がリソースを作成したかにかかわらず、アカウントで作成されたリソースを所有します。以下に例を示します。

  • AWS アカウントのルートアカウントの認証情報を使用して AWS Cloud9 開発環境 を作成する場合 (これは可能ですが、AWS セキュリティのベストプラクティスとしてはお勧めしません)、AWS アカウントは 環境 の owner となります。

  • AWS アカウントで IAM ユーザーを作成し、このユーザーに 環境 を作成するアクセス権限を付与すれば、このユーザーは 環境 を作成できます。ただし、環境 を所有するのは、ユーザーが属する AWS アカウントです。

  • AWS アカウントで作成した IAM ロールに 環境 を作成するアクセス権限を付与すると、このロールを引き受けたすべてのユーザーが 環境 を作成できます。ロールが属する AWS アカウントは 環境 を所有しているとします。

リソースへのアクセスの管理

アクセスポリシーでは、誰がどのリソースにアクセスできるかを記述します。

注記

このセクションでは、AWS Cloud9 での IAM の使用について説明します。これは、IAM サービスに関する詳細情報を取得できません。完全な IAM ドキュメントについては、『IAM ユーザーガイド』の「IAM とは」を参照してくださいIAM ポリシー構文については、IAM ユーザーガイド の「IAM JSON ポリシーリファレンス」を参照してください。

IAM アイデンティティにアタッチされたポリシーは、アイデンティティベースのポリシー (または IAM ポリシー) と呼ばれます。リソースにアタッチされたポリシーはリソースベースのポリシーと呼ばれます。AWS Cloud9 では、アイデンティティベースのポリシーとリソースベースのポリシーの両方をサポートしています。

以下の各 API アクションでは、各 API アクションを呼び出す IAM アイデンティティにアタッチする必要があるのは IAM ポリシーのみです。

  • CreateEnvironmentEC2

  • DescribeEnvironments

次の API アクションではリソースベースのポリシーが必要です。IAM ポリシーは必須ではありませんが、これらの API アクションを呼び出す IAM アイデンティティに IAM ポリシーがアタッチされている場合は、AWS Cloud9 で IAM ポリシーを使用します。リソースベースのポリシーは、必要な AWS Cloud9 リソースに適用する必要があります。

  • CreateEnvironmentMembership

  • DeleteEnvironment

  • DeleteEnvironmentMembership

  • DescribeEnvironmentMemberships

  • DescribeEnvironmentStatus

  • UpdateEnvironment

  • UpdateEnvironmentMembership

これらの各 API アクションの詳細については、『AWS Cloud9 API リファレンス』を参照してください。

リソースベースのポリシーを AWS Cloud9 リソースに直接アタッチすることはできません。代わりに AWS Cloud9 は、環境メンバー を追加、変更、更新、または削除するときに AWS Cloud9 リソースに適切なリソースベースのポリシーをアタッチします。

AWS Cloud9 リソースに対してアクションを実行するアクセス権限をユーザーに付与するには、このユーザーが属する IAM グループにアクセス権限ポリシーをアタッチできます。可能な限り、AWS Cloud9 の AWS 管理 (定義済み) ポリシーをアタッチすることをお勧めします。AWS 管理ポリシーは、より簡単かつすばやくアタッチできます。AWS 管理ポリシーには、環境、環境 ユーザー、および 環境 への 読み取り専用 アクセスのみを持つユーザーの完全な管理など、一般的な使用シナリオやユーザータイプ向けの事前定義されたアクセス許可セットも含まれます。AWS Cloud9 の AWS 管理ポリシーのリストについては、「AWS Cloud9 での AWS 管理 (事前定義) ポリシー」を参照してください。

より詳細な使用シナリオと一意のユーザータイプについては、独自のカスタマー管理ポリシーを作成してアタッチすることができます。「AWS Cloud9 の追加のセットアップオプション (チームとエンタープライズ)」および「AWS Cloud9 カスタマー管理ポリシーの作成」を参照してください。

IAM アイデンティティに IAM ポリシー (AWS 管理またはカスタマー管理) をアタッチするには、IAM ユーザーガイド の「IAM ポリシーをアタッチする (コンソール)」を参照してください。

AWS Cloud9 での AWS 管理 (事前定義) ポリシー

AWS は、多くの一般的ユースケースに対処するために、AWS が作成および管理するスタンドアロンの IAM ポリシーを用意しています。これらの AWS 管理ポリシーでは、一般的なユースケースに必要なアクセス許可が自動的に付与されるため、どのアクセス許可が必要かの判断は不要です。たとえば、AWS Cloud9 の AWS 管理ポリシーを使用して AWS Cloud9 開発環境 を完全に管理したり、環境 ユーザーとして行動したり、管理ポリシーの追加先の 環境 を使用したりできます。詳細については、『IAM ユーザーガイド』の「AWS 管理ポリシー」を参照してください。

IAM アイデンティティに AWS 管理ポリシーをアタッチするには、IAM ユーザーガイド の「IAM ポリシーをアタッチする (コンソール)」を参照してください。

以下の AWS 管理ポリシーは、アカウントの IAM アイデンティティにアタッチできます。これらは AWS Cloud9 に固有のものです。

  • AWSCloud9Administrator: 以下のアクセス権限があります。

    • Amazon EC2: AWS アカウントの複数 Amazon VPC とサブネットリソースに関する情報を取得する。

    • AWS Cloud9: AWS アカウントのすべての AWS Cloud9 アクション。

    • IAM: AWS アカウントの IAM ユーザーに関する情報を取得し、必要に応じて AWS アカウントに AWS Cloud9 サービスにリンクされたロールを作成する。

    AWSCloud9Administrator 管理ポリシーには以下のアクセス権限が含まれます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloud9:*", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "iam:GetUser", "iam:ListUsers" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": "cloud9.amazonaws.com" } } } ] }
  • AWSCloud9User: 以下のアクセス権限があります。

    • Amazon EC2: AWS アカウントの複数 Amazon VPC とサブネットリソースに関する情報を取得する。

    • AWS Cloud9: 環境 に関する情報を作成して取得し、その 環境 のユーザー設定を取得して変更する。

    • IAM: AWS アカウントの IAM ユーザーに関する情報を取得し、必要に応じて AWS アカウントに AWS Cloud9 サービスにリンクされたロールを作成する。

    AWSCloud9User 管理ポリシーには以下のアクセス権限が含まれます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloud9:CreateEnvironmentEC2", "cloud9:CreateEnvironmentSSH", "cloud9:GetUserPublicKey", "cloud9:GetUserSettings", "cloud9:UpdateUserSettings", "cloud9:ValidateEnvironmentName", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "iam:GetUser", "iam:ListUsers" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloud9:DescribeEnvironmentMemberships" ], "Resource": "*", "Condition": { "Null": { "cloud9:UserArn": "true", "cloud9:EnvironmentId": "true" } } }, { "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole" ], "Resource": "*", "Condition": { "StringLike": { "iam:AWSServiceName": "cloud9.amazonaws.com" } } } ] }
  • AWSCloud9EnvironmentMember: 以下のアクセス権限があります。

    • AWS Cloud9: 招待された 環境 の情報を取得し、招待された 環境 のユーザー設定を取得する。

    • IAM: AWS アカウントの IAM ユーザーに関する情報を取得する。

    AWSCloud9EnvironmentMember 管理ポリシーには以下のアクセス権限が含まれます。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloud9:GetUserSettings", "cloud9:UpdateUserSettings", "iam:GetUser", "iam:ListUsers" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "cloud9:DescribeEnvironmentMemberships" ], "Resource": "*", "Condition": { "Null": { "cloud9:UserArn": "true", "cloud9:EnvironmentId": "true" } } } ] }

AWS Cloud9 カスタマー管理ポリシーの作成

AWS 管理ポリシーのいずれもアクセス制御要件を満たしていない場合は、独自のカスタマー管理ポリシーを作成してアタッチすることができます。

カスタマー管理ポリシーを作成するには、IAM ユーザーガイド の「IAM ポリシーを作成する (コンソール)」を参照してください。

ポリシー要素の指定: 効果、プリンシパル、アクション、リソース

サービスは、AWS Cloud9 リソースごとに一連の API オペレーションを定義します。こうした API オペレーションへのアクセス権限を付与するために、AWS Cloud9 は一連のアクションをポリシーに定義します。

以下は、基本的なポリシーの要素です。

  • Effect: ユーザーがアクションをリクエストする際の効果を指定します。許可または拒否のいずれかになります。リソースへのアクセスを明示的に許可していない場合、アクセスは暗黙的に拒否されます。リソースへのアクセスを明示的に拒否することもできます。これは、別のポリシーがアクセスを許可している場合でも、ユーザーのリソースへのアクセスを禁止するために行うことができます。

  • Principal: アイデンティティベースのポリシー (IAM ポリシー) で、ポリシーがアタッチされているユーザーが暗黙のプリンシパルとなります。リソースベースのポリシーでは、権限を受け取りたいユーザー、アカウント、サービス、またはその他のエンティティを指定します。

  • Resource: ARN を使用して、ポリシーを適用するリソースを識別します。

  • Action: アクションのキーワードを使用して、許可または拒否するリソースオペレーションを識別します。たとえば、cloud9:CreateEnvironmentEC2 権限は、CreateEnvironmentEC2 オペレーションを実行する権限をユーザーに与えます。

IAM ポリシーの構文と説明の詳細については、『IAM ユーザーガイド』の「IAM JSON ポリシーを参照」を参照してください。

すべての AWS Cloud9 API アクションとそれらが適用されるリソースの表については、「AWS Cloud9 の権限リファレンス」を参照してください。

お客様が管理するポリシーの例

このセクションでは、AWS Cloud9 アクションのアクセス許可を付与するポリシー例を示しています。以下のサンプル IAM ポリシーは、IAM アイデンティティに対して AWS Cloud9 へのアクセスを許可するか、明示的に拒否するように変更できます。

IAM アイデンティティに対するカスタマー管理ポリシーを作成またはアタッチするには、IAM ユーザーガイド の「IAM ポリシーを作成する (コンソール)」および「IAM ポリシーをアタッチする (コンソール)」を参照してください。

注記

以下の例では、米国東部 (オハイオ) リージョン (us-east-2)、架空の AWS アカウント ID (123456789012)、および架空の AWS Cloud9 開発環境 ID (81e900317347585a0601e04c8d52eaEX) を使用します。

環境 に関する情報を取得する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントの 環境 に関する情報の取得を許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:DescribeEnvironments", "Resource": "*" } ] }

前述のアクセス権限は、AWS 管理ポリシー AWSCloud9Administrator および AWSCloud9User に既に含まれています。

作成 EC2 環境

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントに AWS Cloud9 EC2 開発環境 を作成することを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:CreateEnvironmentEC2", "Resource": "*" } ] }

前述のアクセス権限は、AWS 管理ポリシー AWSCloud9Administrator および AWSCloud9User に既に含まれています。

特定の Amazon EC2 インスタンスタイプで EC2 環境 を作成する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントに AWS Cloud9 EC2 開発環境 を作成することを許可します。ただし、EC2 環境 は指定されたクラスの Amazon EC2 インスタンスタイプのみを使用できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:CreateEnvironmentEC2", "Resource": "*", "Condition": { "StringLike": { "cloud9:InstanceType": "t2.*" } } } ] }

AWS 管理ポリシーとして AWSCloud9Administrator または AWSCloud9User が IAM エンティティにアタッチ済みである場合、これらの AWS 管理ポリシーは、以前の IAM ポリシーステートメントの動作よりも優先されます。これは、AWS 管理ポリシーがより許容的であるためです。

特定の Amazon VPC サブネットに EC2 環境 を作成する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントに AWS Cloud9 EC2 開発環境 を作成することを許可します。ただし、EC2 環境 は指定した Amazon VPC サブネットのみを使用できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:CreateEnvironmentEC2", "Resource": "*", "Condition": { "StringLike": { "cloud9:SubnetId": [ "subnet-12345678", "subnet-23456789" ] } } } ] }

AWS 管理ポリシーとして AWSCloud9Administrator または AWSCloud9User が IAM エンティティにアタッチ済みである場合、これらの AWS 管理ポリシーは、以前の IAM ポリシーステートメントの動作よりも優先されます。これは、AWS 管理ポリシーがより許容的であるためです。

特定の 環境 名で EC2 環境 を作成する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントに AWS Cloud9 EC2 開発環境 を作成することを許可します。ただし、EC2 環境 は指定された名前のみを使用できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:CreateEnvironmentEC2", "Resource": "*", "Condition": { "StringEquals": { "cloud9:EnvironmentName": "my-demo-environment" } } } ] }

AWS 管理ポリシーとして AWSCloud9Administrator または AWSCloud9User が IAM エンティティにアタッチ済みである場合、これらの AWS 管理ポリシーは、以前の IAM ポリシーステートメントの動作よりも優先されます。これは、AWS 管理ポリシーがより許容的であるためです。

SSH 環境 のみを作成する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントに AWS Cloud9 SSH 開発環境 を作成することを許可します。ただし、エンティティは AWS Cloud9 EC2 開発環境 を作成できません。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:CreateEnvironmentSSH", "Resource": "*" }, { "Effect": "Deny", "Action": "cloud9:CreateEnvironmentEC2", "Resource": "*" } ] }

環境 を更新する、または 環境 の更新を禁止する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントの AWS Cloud9 開発環境 に関する情報の変更を許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:UpdateEnvironment", "Resource": "*" } ] }

前述のアクセス権限は、AWS 管理ポリシー AWSCloud9Administrator に既に含まれています。

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、指定した ARN を持つ 環境 に関する情報を変更することを明示的に禁止します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloud9:UpdateEnvironment", "Resource": "arn:aws:cloud9:us-east-2:123456789012:environment:81e900317347585a0601e04c8d52eaEX" } ] }

環境メンバー のリストを取得する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントで 環境 の members のリストを取得することを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:DescribeEnvironmentMemberships", "Resource": "*" } ] }

前述のアクセス権限は、AWS 管理ポリシー AWSCloud9Administrator に既に含まれています。また、前述のアクセス権限は、AWS 管理ポリシー AWSCloud9User の同等のアクセス権限に比べてより許容的です。

特定のユーザーのみと 環境 を共有する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、指定したユーザーとのみアカウントの 環境 を共有することを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloud9:CreateEnvironmentMembership" ], "Resource": "*", "Condition": { "StringEquals": { "cloud9:UserArn": "arn:aws:iam::123456789012:user/MyDemoUser" } } } ] }

AWS 管理ポリシーとして AWSCloud9Administrator または AWSCloud9User が IAM エンティティにアタッチ済みである場合、これらの AWS 管理ポリシーは、以前の IAM ポリシーステートメントの動作よりも優先されます。これは、AWS 管理ポリシーがより許容的であるためです。

環境 の共有を禁止する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントの 環境 の共有を禁止します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "cloud9:CreateEnvironmentMembership", "cloud9:UpdateEnvironmentMembership" ], "Resource": "*" } ] }

環境メンバー の設定を変更する、または変更を禁止する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントで 環境 の members の設定を変更することを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:UpdateEnvironmentMembership", "Resource": "*" } ] }

前述のアクセス権限は、AWS 管理ポリシー AWSCloud9Administrator に既に含まれています。

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、指定した ARN を持つ 環境 の members の設定を変更することを明示的に禁止します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloud9:UpdateEnvironmentMembership", "Resource": "arn:aws:cloud9:us-east-2:123456789012:environment:81e900317347585a0601e04c8d52eaEX" } ] }

環境メンバー を削除する、または削除を禁止する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントの 環境 から member を削除することを許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:DeleteEnvironmentMembership", "Resource": "*" } ] }

前述のアクセス権限は、AWS 管理ポリシー AWSCloud9Administrator に既に含まれています。

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、指定した ARN を持つ 環境 から任意の member を削除することを明示的に禁止します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloud9:DeleteEnvironmentMembership", "Resource": "arn:aws:cloud9:us-east-2:123456789012:environment:81e900317347585a0601e04c8d52eaEX" } ] }

環境 を削除する、または 環境 の削除を禁止する

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、アカウントの 環境 の削除を許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "cloud9:DeleteEnvironment", "Resource": "*" } ] }

前述のアクセス権限は、AWS 管理ポリシー AWSCloud9Administrator に既に含まれています。

次の例の IAM ポリシーステートメントでは、これをアタッチした IAM エンティティに対して、指定した ARN を持つ 環境 の削除を明示的に禁止します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "cloud9:DeleteEnvironment", "Resource": "arn:aws:cloud9:us-east-2:123456789012:environment:81e900317347585a0601e04c8d52eaEX" } ] }

AWS Cloud9 の権限リファレンス

アクセスコントロールをセットアップし、IAM アイデンティティ (アイデンティティベースのポリシー) にアタッチできるアクセス権限ポリシーを作成する際に、以下の表をリファレンスとして使用できます。

AWS Cloud9 ポリシーで AWS 全体の条件キーを使用して、条件を表現することができます。リストについては、IAM ユーザーガイド の「IAM JSON ポリシーエレメント: Condition」を参照してください。

アクションは、ポリシーの Action フィールドで指定します。アクションを指定するには、API オペレーション名 (cloud9: など) の前に "Action": "cloud9:DescribeEnvironments" プレフィックスを使用します。複数のアクションを単一のステートメントで指定する場合は、カンマで区切ります (例:"Action": [ "cloud9:UpdateEnvironment", "cloud9:DeleteEnvironment" ])。

ワイルドカード文字の使用

ポリシーの * フィールドでリソース値として、ワイルドカード文字 (Resource) を使用して、または使用せずに ARN を指定します。ワイルドカードを使用して複数のアクションまたはリソースを指定することができます。たとえば、cloud9:* はすべての AWS Cloud9 アクションを指定し、cloud9:Describe* は、Describe で始まるすべての AWS Cloud9 アクションを指定します。

次の例では、IAM エンティティに対して、アカウントの 環境 の 環境 および 環境 メンバーシップに関する情報の取得を許可します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloud9:Describe*" ], "Resource": "*" } ] }

前述のアクセス権限は、AWS 管理ポリシー AWSCloud9Administrator に既に含まれています。また、前述のアクセス権限は、AWS 管理ポリシー AWSCloud9User の同等のアクセス権限に比べてより許容的です。

AWS Cloud9 API オペレーションおよびアクションで必要なアクセス許可

AWS Cloud9 オペレーション 必要なアクセス権限 (API アクション) リソース

CreateEnvironmentEC2

cloud9:CreateEnvironmentEC2

AWS Cloud9 EC2 開発環境 を作成するのに必要です。

*

CreateEnvironmentMembership

cloud9:CreateEnvironmentMembership

環境 に member を追加するために必要です。

arn:aws:cloud9:REGION_ID:ACCOUNT_ID:environment:ENVIRONMENT_ID

DeleteEnvironment

cloud9:DeleteEnvironment

環境 を削除するのに必要です。

arn:aws:cloud9:REGION_ID:ACCOUNT_ID:environment:ENVIRONMENT_ID

DeleteEnvironmentMembership

cloud9:DeleteEnvironmentMembership

環境 から member を削除するために必要です。

arn:aws:cloud9:REGION_ID:ACCOUNT_ID:environment:ENVIRONMENT_ID

DescribeEnvironmentMemberships

cloud9:DescribeEnvironmentMemberships

環境 の members のリストを取得するのに必要です。

*

DescribeEnvironments

cloud9:DescribeEnvironments

環境 に関する情報を取得するのに必要です。

arn:aws:cloud9:REGION_ID:ACCOUNT_ID:environment:ENVIRONMENT_ID

DescribeEnvironmentStatus

cloud9:DescribeEnvironmentStatus

環境 のステータスに関する情報を取得するのに必要です。

arn:aws:cloud9:REGION_ID:ACCOUNT_ID:environment:ENVIRONMENT_ID

UpdateEnvironment

cloud9:UpdateEnvironment

環境 の設定を更新するのに必要です。

arn:aws:cloud9:REGION_ID:ACCOUNT_ID:environment:ENVIRONMENT_ID

UpdateEnvironmentMembership

cloud9:UpdateEnvironmentMembership

環境 の member の設定を更新するのに必要です。

arn:aws:cloud9:REGION_ID:ACCOUNT_ID:environment:ENVIRONMENT_ID

AWS 管理の一時認証情報

AWS 管理の一時認証情報 がサポートするアクションのリストのみが必要な場合は、「AWS 管理の一時認証情報 によってサポートされるアクション」に進みます。

AWS Cloud9 EC2 開発環境 の場合、AWS Cloud9 は 環境 で一時的な AWS アクセス認証情報を利用できるようにします。これらはAWS 管理の一時認証情報と呼ばれます。これには次の利点があります。

  • AWS エンティティ (IAM ユーザーなど) の永続的な AWS アクセス認証情報を 環境 に保存する必要はありません。これにより、ユーザーの知識と承認なしに、環境メンバー によってこれらの認証情報にアクセスすることができなくなります。

  • 環境 に接続する Amazon EC2 インスタンスに対して、インスタンスプロファイルを手動で設定、管理、アタッチする必要はありません。(インスタンスプロファイルは、一時的な AWS アクセス認証情報を管理するための別のアプローチです)。

  • AWS Cloud9 は一時的な認証情報を継続的に更新するため、単一の認証情報のセットは限られた時間しか使用できません。これは AWS セキュリティのベストプラクティスです。詳細については、「AWS 管理の一時認証情報 の作成および更新」を参照してください。

  • AWS Cloud9 では、一時認証情報を使用して 環境 から AWS のアクションやリソースにアクセスする方法に対して追加の制限を課しています。これも AWS セキュリティのベストプラクティスです。

EC2 環境 が AWS エンティティ (IAM ユーザーなど) に代わって AWS のサービスにアクセスしようとするたびに、どのように AWS 管理の一時認証情報 が動作するかを以下に示します。

  1. AWS Cloud9 は、呼び出し元の AWS エンティティ (IAM ユーザーなど) が、AWS のリクエストされたリソースに対してリクエストされたアクションを実行するアクセス権限を IAM に持っているかどうかを確認します。アクセス権限がない場合、または明示的に拒否されている場合、リクエストは失敗します。

  2. AWS Cloud9 は AWS 管理の一時認証情報 をチェックし、そのアクセス権限が AWS 内のリクエストされたリソースに対するリクエストされたアクションを許可するかどうかを確認します。アクセス権限がない場合、または明示的に拒否されている場合、リクエストは失敗します。AWS 管理の一時認証情報 がサポートするアクセス権限のリストについては、「AWS 管理の一時認証情報 によってサポートされるアクション」を参照してください。

  3. AWS エンティティと AWS 管理の一時認証情報 の両方がリクエストされたリソースに対してリクエストされたアクションを許可する場合、リクエストは成功します。

  4. AWS エンティティまたは AWS 管理の一時認証情報 のどちらかが、リクエストされたリソースに対してリクエストされたアクションを明示的に拒否すると (または明示的に許可しない)、リクエストは失敗します。これは、呼び出し元の AWS エンティティが正しいアクセス権限を持っていても、AWS Cloud9 が明示的に許可しない場合、リクエストが失敗することを意味します。同様に、AWS Cloud9 が特定のリソースに対して特定のアクションをとることを許可する場合、AWS エンティティも明示的に許可していないと、リクエストは失敗します。

EC2 環境 の所有者は、以下のように、いつでも 環境 の AWS 管理の一時認証情報 をオンまたはオフにすることができます。

  1. 環境 を開いた状態で、AWS Cloud9 IDE のメニューバーの [AWS Cloud9]、[設定] を選択します。

  2. [設定] タブのナビゲーションペインで、[AWS Settings (AWS の設定)]、[認証情報] の順に選択します。

  3. AWS 管理の一時認証情報 をオンまたはオフにするには、[AWS managed temporary credentials (AWS 管理の一時認証情報)] を使用します。

AWS 管理の一時認証情報 をオフにすると、リクエストを行った AWS エンティティに関係なく、環境 はデフォルトで AWS のサービスにアクセスできません。環境 の AWS 管理の一時認証情報 を有効化できないか、有効化しない場合、環境 から AWS のサービスにアクセスするには、代わりに以下の方法を検討してください。

上記の方法は、EC2 環境 の AWS 管理の一時認証情報 によって許可 (または拒否) されるすべてのアクセス権限より優先されます。

AWS 管理の一時認証情報 によってサポートされるアクション

AWS Cloud9 EC2 開発環境 の場合、AWS 管理の一時認証情報 は、呼び出し元の AWS アカウント内のすべての AWS リソースに対してすべての AWS アクションを許可しますが、以下の制限があります。

  • AWS Cloud9 には、以下のアクションのみが許可されます。

    • cloud9:CreateEnvironmentEC2

    • cloud9:CreateEnvironmentSSH

    • cloud9:DescribeEnvironmentMemberships

    • cloud9:DescribeEnvironments

    • cloud9:DescribeEnvironmentStatus

    • cloud9:UpdateEnvironment

  • IAM には、以下のアクションのみが許可されます。

    • iam:AttachRolePolicy

    • iam:ChangePassword

    • iam:CreatePolicy

    • iam:CreatePolicyVersion

    • iam:CreateRole

    • iam:CreateServiceLinkedRole

    • iam:DeletePolicy

    • iam:DeletePolicyVersion

    • iam:DeleteRole

    • iam:DeleteRolePolicy

    • iam:DeleteSSHPublicKey

    • iam:DetachRolePolicy

    • iam:GetInstanceProfile

    • iam:GetPolicy

    • iam:GetPolicyVersion

    • iam:GetRole

    • iam:GetRolePolicy

    • iam:GetSSHPublicKey

    • iam:GetUser

    • iam:List*

    • iam:PassRole

    • iam:PutRolePolicy

    • iam:SetDefaultPolicyVersion

    • iam:UpdateAssumeRolePolicy

    • iam:UpdateRoleDescription

    • iam:UpdateSSHPublicKey

    • iam:UploadSSHPublicKey

  • すべての IAM アクションを適用できるロールは、名前が Cloud9- で始まるロールのみです。ただし、iam:PassRole はすべてのロール名で機能します。

  • AWS Security Token Service (AWS STS) には、以下のアクションのみが許可されます。

    • sts:GetCallerIdentity

    • sts:DecodeAuthorizationMessage

  • サポートされているすべての AWS アクションは、環境の IP アドレスに制限されています。これは AWS セキュリティのベストプラクティスです。

EC2 環境 でアクセスする必要があるアクションやリソースを AWS Cloud9 がサポートしていないか、EC2 環境 に対して AWS 管理の一時認証情報 がオフになっていて再有効化できない場合は、代わりに以下の方法を検討してください。

上記の方法は、EC2 環境 の AWS 管理の一時認証情報 によって許可 (または拒否) されるすべてのアクセス権限より優先されます。

AWS 管理の一時認証情報 の作成および更新

AWS Cloud9 EC2 開発環境 の場合、最初に 環境 を開いたときに AWS 管理の一時認証情報 が作成されます。

AWS 管理の一時認証情報 は、以下のいずれかの条件の下で更新されます。

  • 一定の時間が経過するたび。現在のところ、これは 5 分ごとです。

  • 環境 の IDE を表示するウェブブラウザタブを再ロードするたび。

  • 環境 の ~/.aws/credentials ファイルにリストされているタイムスタンプに達したとき。

  • [AWS managed temporary credentials (AWS 管理の一時認証情報)] 設定がオフに設定されている場合、それをオンに戻すたび(この設定を表示または変更するには、IDE のメニューバーで [AWS Cloud9]、[設定] を選択します。[設定] タブのナビゲーションペインで、[AWS Settings (AWS の設定)]、[認証情報] の順に選択します)。