アプリケーションランナーと IAM の連携 - AWS App Runner

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

アプリケーションランナーと IAM の連携

IAM を使用してへのアクセス権をに管理する前にAWS App RunnerApp Runner で使用できる IAM 機能を理解しておく必要があります。App Runner およびその他の方法についてハイレベルのビューを取得するにはAWSサービスが IAM と連携する場合は、AWSIAM と連携するサービス()IAM ユーザーガイド

その他の App Runner セキュリティトピックについては、」アプリランナーのセキュリティ

App Runner アイデンティティベースのポリシー

IAM アイデンティティベースのポリシーでは、許可または拒否するアクションとリソース、またアクションを許可または拒否する条件を指定できます。App Runner は、特定のアクション、リソース、および条件キーをサポートしています。JSON ポリシーで使用するすべての要素については、」を参照してください。IAM JSON ポリシーエレメントのリファレンス()IAM ユーザーガイド

Actions

管理者はAWSJSON ポリシーを使用して、誰が何にアクセスできるかを指定します。つまり、どのプリンシパル実行できるのアクションでののリソース、そして何の下での条件

JSON ポリシーの Action 要素は、ポリシー内のアクセスを許可または拒否するために使用できるアクションを記述します。ポリシーアクションの名前は通常、関連する AWS API オペレーションと同じです。一致する API オペレーションを持たないアクセス許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加アクションは、依存アクションと呼ばれます。

このアクションは、関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。

App Runner のポリシーアクションは、アクションの前に、次のプレフィックスであるを使用します。apprunner:。 たとえば、Amazon EC2 を使用して Amazon EC2 インスタンスを実行するアクセス許可を付与するには、RunInstancesAPI 操作を実行する場合は、ec2:RunInstances彼らのポリシーのアクション。ポリシーステートメントには、Action または NotAction 要素を含める必要があります。App Runner は、このサービスで実行できるタスクを記述する独自のアクションのセットを定義します。

単一のステートメントに複数のアクションを指定するには、次のようにコンマで区切ります。

"Action": [ "apprunner:CreateService", "apprunner:CreateConnection" ]

ワイルドカード (*) を使用して複数のアクションを指定することができます。たとえば、Describe という単語で始まるすべてのアクションを指定するには、次のアクションを含めます。

"Action": "apprunner:Describe*"

App Runner アクションのリストを表示するには、「」を参照してください。で定義されるアクションAWS App Runner()サービス認証リファレンス

Resources

管理者はAWSJSON ポリシーを使用して、誰が何にアクセスできるかを指定します。つまり、どのプリンシパル実行できるのアクションでののリソース、そして何の下での条件

Resource JSON ポリシーエレメントは、アクションが適用されるオブジェクトを指定します。ステートメントには、Resource または NotResource エレメントを含める必要があります。ベストプラクティスとして、リソースは Amazon リソースネーム (ARN) を使用して指定します。これは、リソースレベルのアクセス許可と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。

オペレーションのリスト化など、リソースレベルのアクセス許可をサポートしないアクションの場合は、ワイルドカード (*) を使用して、ステートメントがすべてのリソースに適用されることを示します。

"Resource": "*"

アプリケーションランナーのリソースには、次の ARN 構造があります。

arn:aws:apprunner:region:account-id:resource-type/resource-name[/resource-id]

ARN の形式の詳細については、「」を参照してください。Amazon リソースネーム (ARN) とAWSサービスの名前空間()AWSの全般的なリファレンス

たとえば、指定するには、my-serviceサービスを実行するには、次の ARN を使用します。

"Resource": "arn:aws:apprunner:us-east-1:123456789012:service/my-service"

特定のアカウントに属するすべてのサービスを指定するには、ワイルドカード (*) を使用します。

"Resource": "arn:aws:apprunner:us-east-1:123456789012:service/*"

リソースを作成するためのアクションなど、一部の App Runner アクションは、特定のリソースで実行できません。このような場合は、ワイルドカード (*) を使用する必要があります。

"Resource": "*"

App Runner リソースタイプおよびその ARN のリストを表示するには、」を参照してください。で定義したリソースAWS App Runner()サービス認証リファレンス。各リソースの ARN を指定できるアクションについては、」で定義されるアクションAWS App Runner

条件キー

管理者はAWSJSON ポリシーを使用して、誰が何にアクセスできるかを指定します。つまり、どのプリンシパル実行できるのアクションでののリソース、そして何の下での条件

Condition エレメント (または Condition ブロック) を使用すると、ステートメントが有効な条件を指定できます。Conditionエレメントはオプションです。イコールや以下などの条件演算子を使用する条件式を作成して、リクエスト内に値のあるポリシーの条件に一致させることができます。

1 つのステートメントに複数の Condition エレメントを指定する場合、または 1 つの Condition エレメントに複数のキーを指定する場合、AWS が論理 AND 演算を使用してそれらを評価します。単一の条件キーに複数の値を指定する場合、AWS が論理 OR 演算を使用して条件を評価します。ステートメントのアクセス許可が付与される前にすべての条件が満たされる必要があります。

条件を指定する際にプレースホルダー変数も使用できます。たとえば、IAM ユーザー名でタグ付けされている場合のみ、リソースにアクセスする IAM ユーザーアクセス許可を付与できます。詳細については、「」を参照してください。IAM ポリシーエレメント:変数とタグ()IAM ユーザーガイド

AWSは、グローバル条件キーとサービス固有の条件キーをサポートしています。すべてを表示するにはAWSグローバル条件キーの詳細については、「」を参照してくださいAWSグローバル条件コンテキストキー()IAM ユーザーガイド

App Runner は、いくつかのグローバル条件キーの使用をサポートしています。すべてを表示するにはAWSグローバル条件キーの詳細については、「」を参照してくださいAWSグローバル条件コンテキストキー()IAM ユーザーガイド

App Runner は、サービス固有の条件キーのセットを定義します。さらに、App Runner は、条件キーを使用して実装されるタグベースのアクセス制御をサポートしています。詳細については、「アプリケーションランナータグに基づく承認」を参照してください。

App Runner 条件キーのリストを表示するには、」を参照してください。の条件キーAWS App Runner()サービス認証リファレンス。条件キーを使用できるアクションおよびリソースについては、」で定義されるアクションAWS App Runner

Examples

App Runner アイデンティティベースのポリシーの例については、」を参照してください。App Runner アイデンティティベースのポリシーの例

App Runner リソースベースのポリシー

App Runner は、リソースベースのポリシーをサポートしていません。

アプリケーションランナータグに基づく承認

App Runner リソースにタグをアタッチしたり、App Runner へのリクエストでタグを渡したりすることができます。タグに基づいてアクセスを制御するには、apprunner:ResourceTag/key-nameaws:RequestTag/key-name または aws:TagKeys の条件キーを使用して、ポリシーの条件要素でタグ情報を提供します。App Runner リソースのタグ付けの詳細については、」を参照してください。アプリランナーサービスの設定

リソースのタグに基づいてリソースへのアクセスを制限するためのアイデンティティベースのポリシーの例を表示するには、「タグに基づくアプリケーションランナーサービスへのアクセスの制御」を参照してください。

アプリケーションランナーのユーザー権限

App Runner を使用するには、IAM ユーザーは App Runner アクションに対するアクセス権限が必要です。ユーザーにアクセス許可を付与する一般的な方法は、IAM ユーザーまたはグループにポリシーをアタッチすることです。ユーザーのアクセス許可の管理の詳細については、」を参照してください。IAM ユーザーのアクセス許可の変更()IAM ユーザーガイド

App Runner には、ユーザーにアタッチできる 2 つの管理ポリシーが用意されており、

  • AWSAppRunnerReadOnlyAccess-App Runner リソースの詳細をリストおよび表示するアクセス許可を付与します。

  • AWSAppRunnerFullAccess— すべての App Runner アクションに対する権限を付与します。

ユーザー権限をより細かく制御するために、カスタムポリシーを作成してユーザーにアタッチできます。詳細については、「」を参照してください。IAM ポリシーの作成()IAM ユーザーガイド

ユーザーポリシーの例については、「」を参照してください。ユーザーポリシー

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "apprunner:List*", "apprunner:Describe*" ], "Resource": "*" } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/apprunner.amazonaws.com/AWSServiceRoleForAppRunner", "Condition": { "StringLike": { "iam:AWSServiceName": "apprunner.amazonaws.com" } } }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "*", "Condition": { "StringLike": { "iam:PassedToService": "apprunner.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*" }, { "Sid": "Administrative permission over AppRunner applications", "Effect": "Allow", "Action": "apprunner:*", "Resource": "*" } ] }

アプリケーションランナー IAM ロール

あんIAM ロール内のエンティティですAWS アカウント特定のアクセス許可を持つ。

サービスにリンクされたロール

サービスにリンクされたロールによって、AWS サービスが他のサービスのリソースにアクセスして自動的にアクションを完了できます。サービスにリンクされたロールは、IAM アカウント内に表示され、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールのアクセス許可を表示できますが、編集することはできません。

App Runner はサービスにリンクされたロールをサポートします。App Runner サービスにリンクされたロールの作成または管理の詳細については、」App Runner のサービスにリンクされたロールの使用

サービスロール

この機能では、サービスのロールをユーザーに代わって引き受けることをサービスに許可します。このロールにより、サービスはユーザーに代わって他のサービスのリソースにアクセスし、アクションを実行できます。サービスロールは、IAM アカウントに表示され、サービスによって所有されます。つまり、IAM 管理者は、このロールのアクセス許可を変更できます。ただし、これを行うことにより、サービスの機能が損なわれる場合があります。

App Runnerは、いくつかのサービスロールをサポートしています。

アクセスロール

アクセスロールは、アカウントの Amazon Elastic Container Registry (Amazon ECR) のイメージにアクセスするために、App Runner が使用するロールです。Amazon ECR の画像にアクセスする必要があるため、Amazon ECR パブリックでは必須ではありません。Amazon ECR でイメージに基づいてサービスを作成する前に、IAM を使用してサービスロールを作成し、AWSAppRunnerServicePolicyForECRAccess管理ポリシーにログオンします。このロールを App Runner に渡すには、CreateServiceAPI の使用AuthenticationConfiguration構造体 (SourceConfigurationパラメーターを使用)、または App Runner コンソールを使用してサービスを作成するときに使用します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:DescribeImages", "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }
注記

アクセスロールに独自のカスタムポリシーを作成する場合は、必ず"Resource": "*"向けのecr:GetAuthorizationTokenaction. トークンを使用して、アクセス権限がある Amazon ECR レジストリにアクセスできます。

アクセスロールを作成するときは、App Runner サービスプリンシパルを宣言する信頼ポリシーを追加してくださいbuild.apprunner.amazonaws.com信頼されたエンティティとして。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "build.apprunner.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

App Runner コンソールを使用してサービスを作成する場合、コンソールは自動的にアクセスロールを作成し、新しいサービス用にそのロールを選択できます。コンソールには、アカウント内の他のロールも一覧表示され、必要に応じて別のロールを選択できます。

インスタンスロール

インスタンスロールは、App Runner が使用するオプションのロールで、AWSサービスアクションをアプリケーションコードで呼び出します。App Runner サービスを作成する前に、IAM を使用して、アプリケーションコードに必要なアクセス許可を持つサービスロールを作成します。その後、このロールをCreateServiceAPI を使用してサービスを作成する場合、または App Runner コンソールを使用してサービスを作成する場合。

インスタンスロールを作成するときは、必ず App Runner サービスプリンシパルを宣言する信頼ポリシーを追加してくださいtasks.apprunner.amazonaws.com信頼されたエンティティとして。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "tasks.apprunner.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

App Runner コンソールを使用してサービスを作成する場合、コンソールにはアカウントのロールが一覧表示され、この目的のために作成したロールを選択できます。

サービスの作成方法については、「」を参照してください。アプリランナーサービスの作成

注記

インスタンスロールが提供するアクセス権限は、アプリケーションによって完全に異なります。あなたのコードはAWSAPI を使用しており、この場合、App Runner にインスタンスロールを提供する必要はありません。

あなたのコードがAWSAPIでは、どの呼び出しであるかを予測する方法はありません。したがって、インスタンスロールの管理ポリシーは提供されません。必要なアクセス権限をインスタンスロールに明示的に含めるか、独自のカスタムポリシーを作成してインスタンスロールで使用する必要があります。