Amazon Managed Service for Apache FlinkはどのようにIAMと協力しますか。 - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink (Amazon MSF) は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。

Amazon Managed Service for Apache FlinkはどのようにIAMと協力しますか。

Amazon MSF では、次のさまざまなコンテキストで IAM を使用します。

アプリケーションのアクセス許可

アプリケーション設定の一部として、アプリケーションに割り当てられた IAM ロールを使用し、Amazon MSF アプリケーションの IAM アクセス許可を制御します。この IAM ロールにより、承認に IAM が使用される他のサービス (Amazon S3、Kinesis Data Streams、DynamoDB など) にアクセスするためのアプリケーションのアクセス許可が特定されます。

警告

サービスロールのアクセス許可を変更すると、Amazon MSF の機能が損なわれる可能性があります。アプリケーションが Amazon S3 バケットからアプリケーションコードをダウンロードし、Amazon CloudWatch にログを送信するアクセス許可を削除しないように注意してください。

リソースベースのポリシーを使用したアプリケーションへのアクセス許可の割り当ては、サポートされていません。アクセスするリソースにアタッチされたポリシーには、Amazon MSF アプリケーションをプリンシパルとして指定することはできません。

アプリケーションコードとアプリケーションログへのアクセス許可

また、Amazon MSF はアプリケーション IAM ロールを使用して Amazon S3 バケットにアップロードされたアプリケーションコードにアクセスし、アプリケーションログを Amazon CloudWatch Logs に書き込みます。

AWS マネジメントコンソールを使用してアプリケーションを作成または更新するとき、アプリケーション設定で [必要なポリシーを使用して IAM ロール <role-name> を作成/更新] を選択すると、Amazon MSF は必要なアクセス許可を Amazon S3 および CloudWatch Logs に割り当てる IAM ロールを自動的に作成および変更します。

IAM ロールを手動で作成するか、自動化ツールを使用してアプリケーションを作成および管理する場合、アプリケーション IAM ロールに次のアクセス許可を追加する必要があります。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket/path-to-application-code" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:/aws/kinesis-analytics/application-name:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:us-east-1:123456789012:log-group:/aws/kinesis-analytics/application-name:log-stream:kinesis-analytics-log-stream" ] } ] }

サービス間の混乱した代理の防止

Amazon MSF アプリケーションが別の AWS のサービスを呼び出すと、より詳細なアクセス許可を付与できます。例えば、IAM ロールが複数のアプリケーションで再利用されている場合、アプリケーションはアクセスすべきでないリソースにアクセスする可能性があります。これは「混乱した代理の問題」と呼ばれます。アクセスされたリソースが特定の Amazon MSF アプリケーションへのアクセスを制限する方法の詳細については、「サービス間の混乱した代理の防止」を参照してください。

アプリケーション管理とライフサイクル制御のアクセス許可

CreateApplicationStartApplicationUpdateApplication などのアプリケーションおよびそのライフサイクルを管理するアクションは、IAM ユーザー、IAM グループ、リソース (例えば、Amazon MSF API を呼び出す AWS Lambda) などのアクションを実行するリソースに関連付けられたアイデンティティベースのポリシーによって制御されます。

注記

下位互換性の理由により、Amazon MSF アプリケーションのライフサイクルを制御する API および SDK は Amazon Kinesis Analytics V2 と呼ばれます。

Amazon MSF アプリケーションにアタッチされたリソースベースのポリシーを使用したアプリケーションライフサイクルアクションのアクセス許可の割り当ては、サポートされていません。アプリケーション IAM ロールは、アプリケーションライフサイクルアクションへのアクセスを制御するために使用されません。アプリケーションロールにアプリケーションライフサイクルのアクセス許可を追加しないでください。

次のテーブルには、Amazon MSF アプリケーションライフサイクルアクションで使用できる IAM 機能が一覧表示されています。

  • Managed Service for Apache Flink およびその他の AWS のサービス がほとんどの IAM 機能と連携する高度な概要については、「IAM ユーザーガイド」の「IAM と連携する AWS のサービス」を参照してください。

  • IAM 許可ポリシーに使用できるサービス固有のリソース、アクション、条件コンテキストキーの詳細については、「サービス認可リファレンス」の「Actions, resources, and condition keys for Amazon Kinesis Analytics V2」を参照してください。

アプリケーションライフサイクルポリシーのアクション

ポリシーアクションのサポート:あり

管理者は AWS JSON ポリシーを使用して、だれが何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

JSON ポリシーの Action 要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。このアクションは関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。

Amazon MSF のポリシーアクションは、アクションの前に kinesisanalytics プレフィックスを使用します。Amazon MSF API および SDK は Amazon Kinesis Analytics V2 プレフィックスを使用します。

単一のステートメントで複数のアクションを指定するには、アクションをカンマで区切ります。次の例では、Amazon MSF ポリシーアクションを指定する構文が示されます。

"Action" : [ "kinesisanalytics:action1", "kinesisanalytics:action2" ]

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

"Action": "kinesisanalytics:Describe*"

IAM ポリシーステートメントの Action 要素で指定できるすべての Amazon MSF API アクションの完全なリストを確認するには、「Actions defined by Amazon Kinesis Analytics V2」を参照してください。

Amazon MSF のアイデンティティベースポリシーの例を確認するには、「アイデンティティベースのポリシーの例」を参照してください。

アプリケーションライフサイクルポリシーのリソース

ポリシーリソースのサポート: あり

管理者は AWS JSON ポリシーを使用して、だれが何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

Resource JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ベストプラクティスとして、Amazon リソースネーム (ARN) を使用してリソースを指定します。リソースレベルの権限をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (*) を使用します。

"Resource": "*"

Amazon MSF アプリケーションライフサイクルアクションのアクセス許可は、アプリケーションごとに 定義されます。IAM ポリシーの Resource JSON 要素は、アクセス許可が適用される Amazon MSF アプリケーションを定義します。

アプリケーション ARN を指定するか、ワイルドカードを使用してアプリケーションのグループを指定することで、1 つのアプリケーションにアクセス許可を割り当てることができます。次の例では、Resource 要素の構文が示されます。

"Resouce" : "arn:partition:kinesisanalytics:Region:account:application/application-name

アクセス許可を割り当てて、ワイルドカードを使用してアプリケーションのサブセットを制御することができます。例えば、アクセス許可を割り当てて、名前が特定のプレフィックスで始まるすべてのアプリケーションを制御することができます。

"Resouce" : "arn:partition:kinesisanalytics:Region:account:application/application-name-prefix*

アプリケーションライフサイクルポリシーの条件キー

サービス固有のポリシー条件キーのサポート: あり

管理者は AWS JSON ポリシーを使用して、だれが何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。

Condition 要素は、定義された基準に基づいてステートメントが実行されるタイミングを指定します。イコールや未満などの 条件演算子 を使用して条件式を作成して、ポリシーの条件とリクエスト内の値を一致させることができます。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドAWS グローバル条件コンテキストキーを参照してください。

条件キーを使用して、Amazon MSF アプリケーションライフサイクルアクションへのアクセス許可を制御できます。Managed Service for Apache Flink の条件キーのリストについては、「サービス認可リファレンス」の「Condition Keys for Amazon Managed Service for Apache Flink」を参照してください。条件キーを使用できるアクションとリソースについては、「Amazon Managed Service for Apache Flink によって定義されたアクション」を参照してください。

Managed Service for Apache Flink の属性ベースのアクセス制御 (ABAC)

ABAC (ポリシー内のタグ) のサポート: あり

条件キーを使用すると、属性に基づいてアクセス許可を定義する認可戦略である属性ベースのアクセス制御 (ABAC) を実装できます。AWS では、属性はタグと呼ばれます。タグは、IAM エンティティ (ユーザーまたはロール)、および多数の AWS リソースにアタッチできます。エンティティとリソースのタグ付けは、ABAC の最初の手順です。その後、プリンシパルのタグがアクセスしようとしているリソースのタグと一致したら、オペレーションを許可するために ABAC ポリシーを設計します。

ABAC は、急成長する環境やポリシー管理が煩雑になる状況で役立ちます。

タグに基づいてアクセスを管理するには、aws:ResourceTag/key-nameaws:RequestTag/key-name、または aws:TagKeys の条件キーを使用して、ポリシーの 条件要素でタグ情報を提供します。サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値はありです。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「部分的」になります。

一時的な認証情報を使用する

一時的な認証情報のサポート: あり

Amazon MSF アプリケーションライフサイクルアクションは、一時的な認証情報をサポートします。

ユーザー名とパスワード以外の方法で AWS マネジメントコンソール にサインインする場合は、一時的な認証情報を使用していることになります。例えば、会社のシングルサインオン (SSO) リンクを使用して AWS にアクセスすると、そのプロセスは自動的に一時認証情報を作成します。また、ユーザーとしてコンソールにサインインしてからロールを切り替える場合も、一時的な認証情報が自動的に作成されます。ロールの切り替えの詳細については、「ユーザーから IAM ロールに切り替える (コンソール)」を参照してください。

一時認証情報は、AWS CLI または AWS API を使用して手動で作成できます。その後、これらの一時的な認証情報を使用して AWS にアクセスできます。長期のアクセスキーを使用する代わりに、一時的な認証情報を動的に生成することをお勧めします。詳細については、「IAM の一時的セキュリティ認証情報」を参照してください。

クロスサービスプリンシパル許可

転送アクセスセッション (FAS) のサポート: あり

Amazon MSF アプリケーションライフサイクルアクションは、クロスサービスプリンシパルのアクセス許可をサポートします。

IAM ユーザーまたはロールを使用して AWS でアクションを実行すると、プリンシパルとしてみなされます。一部のサービスを使用する際に、アクションを実行することで、別のサービスの別のアクションがトリガーされることがあります。転送アクセスセッション (FAS) は、AWS のサービスを呼び出すプリンシパルの権限を、AWS のサービス のリクエストと合わせて使用し、ダウンストリームのサービスに対してリクエストを行います。FAS リクエストは、サービスが、完了するために他の AWS のサービス またはリソースとのやりとりを必要とするリクエストを受け取ったときにのみ行われます。この場合、両方のアクションを実行するためのアクセス許可が必要です。FAS リクエストを行う際のポリシーの詳細については、「転送アクセスセッション」を参照してください。

Managed Service for Apache Flinkのアイデンティティベースのポリシー

アイデンティティベースのポリシーのサポート: あり

アイデンティティベースポリシーは、IAM ユーザー、ユーザーグループ、ロールなど、アイデンティティにアタッチできる JSON 許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件をコントロールします。アイデンティティベースポリシーの作成方法については、「IAM ユーザーガイド」の「カスタマー管理ポリシーでカスタム IAM アクセス許可を定義する」を参照してください。

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

Managed Service for Apache Flink のアイデンティティベースのポリシーの例

Managed Service for Apache Flink ID ベースのポリシーの例は、「Amazon Managed Service for Apache Flink のアイデンティティベースのポリシーの例」でご確認ください。

Managed Service for Apache Flink 内のリソースベースのポリシー

現在、Amazon Managed Service for Apache Flink はリソースベースのアクセス制御をサポートしていません。

Managed Service for Apache Flinでのアクセスコントロールリスト (ACLs)

ACL のサポート: なし

アクセスコントロールリスト (ACL) は、どのプリンシパル (アカウントメンバー、ユーザー、またはロール) がリソースにアクセスするための許可を持つかを制御します。ACL はリソースベースのポリシーに似ていますが、JSON ポリシードキュメント形式は使用しません。

Managed Service for Apache Flinkのサービスロール

サービスロールのサポート: あり

サービスロールとは、サービスがユーザーに代わってアクションを実行するために引き受ける IAM ロールです。IAM 管理者は、IAM 内からサービスロールを作成、変更、削除できます。詳細については、「IAM ユーザーガイド」の「AWS のサービス に許可を委任するロールを作成する」を参照してください。

警告

サービスロールの許可を変更すると、 Managed Service for Apache Flinkの機能が破損する可能性があります。Managed Service for Apache Flink が指示する場合以外は、サービスロールを編集しないでください。

Managed Service for Apache Flinkのサービスにリンクされたロール

サービスリンクロールのサポート: あり

サービスにリンクされたロールは、AWS のサービス にリンクされているサービスロールの一種です。サービスがロールを引き受け、ユーザーに代わってアクションを実行できるようになります。サービスにリンクされたロールは、AWS アカウント に表示され、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールのアクセス許可を表示できますが、編集することはできません。

サービスにリンクされたロールの作成または管理の詳細については、「IAM と提携する AWS のサービス」を参照してください。表の「サービスリンクロール」列に Yes と記載されたサービスを見つけます。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[はい] リンクを選択します。