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 S3、Amazon Kinesis Data Streams、Amazon DynamoDB などの外部リソースへのアプリケーションによるアクセスを制御します。
-
アプリケーション管理とライフサイクル制御のアクセス許可: アプリケーションのライフサイクルを制御する CreateApplication、StartApplication、UpdateApplication などの Amazon MSF API アクションの使用を制御します。IAM ポリシーステートメントの
Action
要素で指定できるすべての Amazon MSF API アクションの完全なリストについては、「サービス認可リファレンス」のAmazon Kinesis Analytics V2 で定義されるアクション」を参照してください。
トピック
アプリケーションのアクセス許可
アプリケーション設定の一部として、アプリケーションに割り当てられた 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 Management Console、アプリケーション設定で必要なポリシーを使用して IAM ロール <role-name> を作成/更新を選択すると、Amazon MSF は必要なアクセス許可を Amazon S3 および CloudWatch Logs に割り当てる IAM ロールを自動的に作成および変更します。
IAM ロールを手動で作成する場合、または自動化ツールを使用してアプリケーションを作成および管理する場合は、アプリケーションの IAM ロールに次のアクセス許可を追加する必要があります。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadCode", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectVersion" ], "Resource": [ "arn:aws:s3:::
bucket-name
/path-to-application-code
" ] }, { "Sid": "ListCloudwatchLogGroups", "Effect": "Allow", "Action": [ "logs:DescribeLogGroups" ], "Resource": [ "arn:aws:logs:region
:account-id
:log-group:*" ] }, { "Sid": "ListCloudwatchLogStreams", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:region
:account-id
:log-group:/aws/kinesis-analytics/application-name
:log-stream:*" ] }, { "Sid": "PutCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:region
:account-id
:log-group:/aws/kinesis-analytics/application-name
:log-stream:kinesis-analytics-log-stream" ] } ] }
サービス間の混乱した代理の防止
Amazon MSF アプリケーションが別の を呼び出す場合 AWS のサービス、より詳細なアクセス許可を提供できます。例えば、IAM ロールが複数のアプリケーションで再利用されている場合、アプリケーションはアクセスすべきでないリソースにアクセスできます。これは混乱した代理問題と呼ばれます。アクセスされたリソースが特定の Amazon MSF アプリケーションへのアクセスを制限する方法については、「」を参照してくださいサービス間の混乱した代理の防止。
アプリケーション管理とライフサイクル制御のアクセス許可
CreateApplication、StartApplication、UpdateApplication などのアプリケーションとそのライフサイクルを管理するアクションは、アクションを実行する IAM ユーザー、IAM グループ、Amazon MSF API の AWS Lambda 呼び出しなどのリソースに関連付けられたアイデンティティベースのポリシーによって制御されます。
注記
下位互換性の理由から、Amazon MSF アプリケーションのライフサイクルを制御する API と SDK は Amazon Kinesis Analytics V2 と呼ばれます。
Amazon MSF アプリケーションにアタッチされたリソースベースのポリシーを使用したアプリケーションライフサイクルアクションのアクセス許可の割り当てはサポートされていません。アプリケーション IAM ロールは、アプリケーションライフサイクルアクションへのアクセスを制御するために使用されません。アプリケーションロールにアプリケーションライフサイクルのアクセス許可を追加しないでください。
次の表に、Amazon MSF アプリケーションのライフサイクルアクションで使用できる IAM 機能を示します。
IAM の機能 | Managed Service for Apache Flink |
---|---|
はい |
|
いいえ |
|
はい |
|
あり |
|
Yes |
|
いいえ |
|
あり |
|
はい |
|
はい |
|
いいえ |
|
いいえ |
-
Managed Service for Apache Flink およびその他の がほとんどの IAM 機能と AWS のサービス 連携する方法の概要については、AWS のサービス IAM ユーザーガイドの「IAM と連携する 」を参照してください。
-
IAM アクセス許可ポリシーで使用できるサービス固有のリソースやアクション、条件コンテキストキーの詳細については、「サービス認可リファレンス」のAmazon Kinesis Analyticsのアクション、リソース、条件キーV2」を参照してください。
アプリケーションライフサイクルポリシーアクション
ポリシーアクションのサポート:あり
管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。
JSON ポリシーの Action
要素にはポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連付けられた AWS API オペレーションと同じです。一致する API オペレーションのない許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加アクションは依存アクションと呼ばれます。
このアクションは関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。
Amazon MSF のポリシーアクションは、アクションの前に kinesisanalytics
プレフィックスを使用します。Amazon MSF APIsと SDKs Amazon Kinesis Analytics V2
プレフィックスを使用します。
単一のステートメントで複数のアクションを指定するには、アクションをカンマで区切ります。次の例は、Amazon MSF ポリシーアクションを指定するための構文を示しています。
"Action" : [ "kinesisanalytics:
action1
", "kinesisanalytics:action2
" ]
ワイルドカード (*) を使用して複数のアクションを指定することもできます。例えば、Describe
という単語で始まるすべてのアクションを指定するには、次のアクションを含めます。
"Action": "kinesisanalytics:Describe*"
IAM ポリシーステートメントの Action
要素で指定できるすべての Amazon MSF API アクションの完全なリストを確認するには、Amazon Kinesis Analytics V2 で定義されるアクション」を参照してください。
Amazon MSF アイデンティティベースのポリシーの例を表示するには、「」を参照してくださいアイデンティティベースのポリシーの例。
アプリケーションライフサイクルポリシーリソース
ポリシーリソースのサポート: あり
管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。
Resource
JSON ポリシー要素はアクションが適用されるオブジェクトを指定します。ステートメントにはResource
または NotResource
要素を含める必要があります。ベストプラクティスとして、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*
アプリケーションライフサイクルポリシー条件キー
サービス固有のポリシー条件キーのサポート: あり
管理者は JSON AWS ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。
Condition
要素 (または Condition
ブロック) を使用すると、ステートメントが有効な条件を指定できます。Condition
要素はオプションです。イコールや未満などの 条件演算子 を使用して条件式を作成して、ポリシーの条件とリクエスト内の値を一致させることができます。
1 つのステートメントに複数の Condition
要素を指定する場合、または 1 つの Condition
要素に複数のキーを指定する場合、 AWS では AND
論理演算子を使用してそれらを評価します。1 つの条件キーに複数の値を指定すると、 は論理OR
オペレーションを使用して条件 AWS を評価します。ステートメントの権限が付与される前にすべての条件が満たされる必要があります。
条件を指定する際にプレースホルダー変数も使用できます。例えば IAM ユーザーに、IAM ユーザー名がタグ付けされている場合のみリソースにアクセスできる権限を付与することができます。詳細については、「IAM ユーザーガイド」の「IAM ポリシーの要素: 変数およびタグ」を参照してください。
AWS は、グローバル条件キーとサービス固有の条件キーをサポートしています。すべての AWS グローバル条件キーを確認するには、「IAM ユーザーガイド」のAWS 「グローバル条件コンテキストキー」を参照してください。
条件キーを使用して、Amazon MSF アプリケーションのライフサイクルアクションへのアクセス許可を制御できます。Managed Service for Apache Flink 条件キーのリストを確認するには、「サービス認可リファレンス」の「Amazon Managed Service for Apache Flink の条件キー」を参照してください。条件キーを使用できるアクションとリソースについては、「Amazon Managed Service for Apache Flink によって定義されたアクション」を参照してください。
Managed Service for Apache Flink の属性ベースのアクセス制御 (ABAC)
ABAC (ポリシー内のタグ) のサポート: あり
条件キーを使用すると、属性ベースのアクセスコントロール (ABAC) を実装できます。ABAC は、属性に基づいてアクセス許可を定義する認可戦略です。では AWS、これらの属性はタグと呼ばれます。タグは、IAM エンティティ (ユーザーまたはロール) および多くの AWS リソースにアタッチできます。エンティティとリソースのタグ付けは、ABAC の最初のステップです。次に、プリンシパルのタグがアクセスしようとしているリソースのタグと一致する場合にオペレーションを許可するように ABAC ポリシーを設計します。
ABAC は、急成長する環境やポリシー管理が煩雑になる状況で役立ちます。
タグに基づいてアクセスを管理するには、aws:ResourceTag/key-name
、aws:RequestTag/key-name
、または aws:TagKeys
の条件キーを使用して、ポリシーの 条件要素でタグ情報を提供します。サービスがすべてのリソースタイプに対して 3 つの条件キーすべてをサポートする場合、そのサービスの値はありです。サービスが一部のリソースタイプに対してのみ 3 つの条件キーのすべてをサポートする場合、値は「部分的」になります。
-
ABAC の詳細については、「ABAC 認可を持つ属性に基づいてアクセス許可を定義する」を参照してください。
-
ABAC を設定する手順を含むチュートリアルを表示するには、「IAM チュートリアル: タグに基づいて AWS リソースにアクセスするためのアクセス許可を定義する」を参照してください。
一時的な認証情報を使用する
一時的な認証情報のサポート: あり
Amazon MSF アプリケーションのライフサイクルアクションは、一時的な認証情報をサポートします。
ユーザー名とパスワード以外の AWS Management Console 方法で にサインインする場合は、一時的な認証情報を使用します。たとえば、会社のシングルサインオン (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 許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できるアクション、リソース、および条件をコントロールします。ID ベースのポリシーの作成方法については、「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
と記載されたサービスを見つけます。サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[はい] リンクを選択します。