Envoy プロキシの認可 - AWS App Mesh

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

Envoy プロキシの認可

プロキシ認可は、Amazon ECS タスク内、Amazon EKS で実行されている Kubernetes ポッド、または Amazon EC2 インスタンスで実行されている Envoy プロキシが、App Mesh Envoy Management Service から1つ以上のメッシュエンドポイントの設定を読み取ることを認可します。2021 年 4 月 26 日以前にすでに Envoy を App Mesh エンドポイントに接続している顧客アカウントの場合、Transport Layer Security (TLS) を使用する仮想ノードと仮想ゲートウェイ (TLS の有無にかかわらず) にはプロキシ認可が必要です。2021 年 4 月 26 日以降に Envoy を App Mesh エンドポイントに接続する顧客アカウントの場合、すべての App Mesh 機能にプロキシ認可が必要です。すべての顧客アカウントが、TLS を使用していない場合でも、すべての仮想ノードのプロキシ認可を有効にして、特定のリソースへの認証に IAM を使用して安全で一貫性のあるエクスペリエンスを提供することをお勧めします。プロキシ認可では、appmesh:StreamAggregatedResources アクセス許可は IAM ポリシーで指定されています。ポリシーは IAM ロールに添付する必要があり、その IAM ロールは、プロキシをホストするコンピューティングリソースに添付する必要があります。

IAM ポリシーを作成する

サービスメッシュ内のすべてのメッシュエンドポイントで、すべてのメッシュエンドポイントの設定を読み取れるようにするには、IAM ロールの作成 に進みます。個々のメッシュエンドポイントで設定を読み取りできるメッシュエンドポイントを制限する場合は、1 つ以上の IAM ポリシーを作成する必要があります。設定を読み取りできるメッシュエンドポイントを、特定のコンピューティングリソースで実行されている Envoy プロキシのみに制限することをお勧めします。IAM ポリシーを作成し、appmesh:StreamAggregatedResources ポリシーへのアクセス許可を追加します。次のポリシーの例では、serviceBv1serviceBv2 という名前の仮想ノードの設定をサービスメッシュで読み取りすることを許可します。サービスメッシュで定義されている他の仮想ノードの設定を読み取りすることはできません。IAM ポリシーの作成と編集の詳細については、「IAM ポリシーの作成」と「IAM ポリシーの編集」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "appmesh:StreamAggregatedResources", "Resource": [ "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/serviceBv1", "arn:aws:appmesh:us-east-1:123456789012:mesh/app1/virtualNode/serviceBv2" ] } ] }

複数のポリシーを作成し、各ポリシーで異なるメッシュエンドポイントへのアクセスを制限できます。

IAM ロールの作成

サービスメッシュ内のすべてのメッシュエンドポイントで、すべてのメッシュエンドポイントの設定を読み取りできるようにするには、1 つの IAM ロールを作成するだけで済みます。個々のメッシュエンドポイントで設定を読み取りできるメッシュエンドポイントを制限する場合は、前の手順で作成したポリシーごとにロールを作成する必要があります。プロキシが実行されるコンピュートリソースの指示を完了します。

  • Amazon EKS — 単一のロールを使用する場合は、クラスターの作成時に作成され、ワーカーノードに割り当てられた既存のロールを使用できます。複数のロールを使用するには、クラスターが「クラスターでのサービスアカウントの IAM ロールの有効化」で定義されている要件を満たしている必要があります。IAM ロールを作成し、ロールを Kubernetes サービスアカウントに関連付けます。詳細については、「サービスアカウントの IAM ロールとポリシーの作成」と「サービスアカウントの IAM ロールの指定」を参照してください。

  • Amazon ECSAWS サービスを選択し、Elastic Container Service を選択してから、IAMロールを作成するときに Elastic Container Service Task のユースケースを選択します。

  • Amazon EC2AWS サービスを選択し、EC2 を選択してから、IAM ロールを作成するときに EC2 ユースケースを選択します。これは、プロキシを Amazon EC2 インスタンスで直接ホストする場合でも、インスタンスで実行されている Kubernetes でホストする場合でも適用されます。

IAM ロールを作成する方法の詳細については、「AWS サービス用のロールの作成」を参照してください。

IAM ポリシーの添付

サービスメッシュ内のすべてのメッシュエンドポイントで、すべてのメッシュエンドポイントの設定を読み取りできるようにするには、AWSAppMeshEnvoyAccess マネージド IAM ポリシーを、前のステップで作成した IAM ロールにアタッチします。個々のメッシュエンドポイントで設定を読み込みできるメッシュエンドポイントを制限する場合は、作成した各ポリシーを、作成した各ロールにアタッチします。カスタムまたはマネージド IAM ポリシーを IAM ロールに添付する方法の詳細については、「IAM ID アクセス許可の追加」を参照してください。

IAM ロールを添付する

各 IAM ロールを適切なコンピューティングリソースに添付します。

  • Amazon EKS — ワーカーノードに添付されたロールにポリシーを添付した場合は、この手順をスキップできます。個別のロールを作成した場合は、各ロールを個別の Kubernetes サービスアカウントに割り当てて、各サービスアカウントを Envoy プロキシを含む個々の Kubernetes ポッドデプロイ仕様に割り当てます。詳細については、「Amazon EKS ユーザーガイド」の「サービスアカウントの IAM ロールの指定」、および「Kubernetes ドキュメント」の「Pod のサービスアカウントを設定する」を参照してください。

  • Amazon ECS — Envoy プロキシを含むタスク定義に Amazon ECS タスクロールを添付します。タスクは EC2 または Fargate 起動タイプでデプロイできます。Amazon ECS タスクロールを作成してタスクにアタッチする方法の詳細については、「タスクの IAM ロールの指定」を参照してください。

  • Amazon EC2 — IAM ロールは、Envoy プロキシをホストする Amazon EC2 インスタンスに添付する必要があります。Amazon EC2 インスタンスにロールをアタッチする方法の詳細については、「IAM ロールを作成しましたが、今度は EC2 インスタンスに割り当てたいと思います」を参照してください。

アクセス許可の確認

コンピュートサービス名の1つを選択して、プロキシをホストするコンピュートリソースに appmesh:StreamAggregatedResources アクセス許可が割り当てられていることを確認します。

Amazon EKS

カスタムポリシーは、ワーカーノード、個々のポッド、またはその両方に割り当てられるロールに割り当てることができます。ただし、個々のポッドのアクセスを個々のメッシュエンドポイントに制限できるように、個々の Pod にのみポリシーを割り当てることをお勧めします。ポリシーがワーカーノードに割り当てられたロールに添付されている場合は、Amazon EC2 タブをクリックし、ワーカーノードインスタンスの手順を完了します。Kubernetes ポッドに割り当てられている IAM ロールを特定するには、次の手順を実行します。

  1. Kubernetes サービスアカウントが割り当てられていることを確認するポッドを含む Kubernetes デプロイの詳細を表示します。次のコマンドは、my-deployment という名前のデプロイの詳細を表示します。

    kubectl describe deployment my-deployment

    返された出力では、Service Account: の右側にある値をメモします。Service Account: で始まる行が存在しない場合、カスタム Kubernetes サービスアカウントは現在デプロイメントに割り当てられていません。1 つを割り当てる必要があります。詳細については、「Kubernetes ドキュメント」の「ポッド用にサービスアカウントを設定する」を参照してください。

  2. 前のステップで返されたサービスアカウントの詳細を表示します。次のコマンドは、my-service-account という名前のサービスアカウントの詳細を表示します。

    kubectl describe serviceaccount my-service-account

    Kubernetes サービスアカウントが AWS Identity and Access Management ロールに関連付けられている場合、返された行の 1 つは、次の例のようになります。

    Annotations:         eks.amazonaws.com/role-arn=arn:aws:iam::123456789012:role/my-deployment

    前の例 my-deployment では、サービスアカウントに関連付けられている IAM ロールの名前です。サービスアカウントの出力に上記の例のような行が含まれていない場合、Kubernetes サービスアカウントは AWS Identity and Access Management アカウントに関連付けされていませんから、1 つ関連付けする必要があります。詳細については、「サービスアカウントの IAM ロールの指定」を参照してください。

  3. AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  4. 左のナビゲーションペインで、[ロール] を選択します。前のステップでメモした IAM ロールの名前を選択します。

  5. 以前に作成したカスタムポリシー、または AWSAppMeshEnvoyAccess マネージドポリシーが一覧表示されます。どちらのポリシーもアタッチされていない場合は、IAM ポリシーを IAM ロールにアタッチします。カスタム IAM ポリシーをアタッチしたいが持っていない場合は、必要なアクセス許可を持つカスタム IAM ポリシーを作成する必要があります。カスタム IAM ポリシーが添付されている場合は、ポリシーを選択し、そこに "Action": "appmesh:StreamAggregatedResources" が含まれていることを確認します。そうでない場合は、そのアクセス許可をカスタム IAM ポリシーに追加する必要があります。また、特定のメッシュエンドポイントに適切な Amazon リソースネーム (ARN) が表示されていることを確認することもできます。ARN がリストされていない場合は、ポリシーを編集して、リストされた ARN を追加、削除、または変更することができます。詳細については、「IAM ポリシーの編集」および IAM ポリシーを作成する を参照してください。

  6. Envoy プロキシを含む各 Kubernetes ポッドについて、上記の手順を繰り返します。

Amazon ECS
  1. Amazon ECS コンソールから、[タスク定義] を選択します。

  2. Amazon ECS タスクを選択します。

  3. [タスク定義名] ページで、タスク定義を選択します。

  4. [タスク定義] ページで、[タスクロール] の右側にある IAM ロール名のリンクを選択します。IAM ロールがリストされていない場合は、IAM ロールを作成しタスク定義を更新してタスクにアタッチする必要があります。

  5. [概要] ページの [アクセス許可] タブで、以前に作成したカスタムポリシー、または AWSAppMeshEnvoyAccess マネージドポリシーのいずれかが一覧表示されていることを確認します。どちらのポリシーもアタッチされていない場合は、IAM ポリシーを IAM ロールにアタッチします。カスタム IAM ポリシーをアタッチしたいが持っていない場合は、カスタム IAM ポリシーを作成します。カスタム IAM ポリシーが添付されている場合は、ポリシーを選択し、そこに "Action": "appmesh:StreamAggregatedResources" が含まれていることを確認します。そうでない場合は、そのアクセス許可をカスタム IAM ポリシーに追加する必要があります。また、特定のメッシュエンドポイントに適切な Amazon リソースネーム (ARN) が表示されていることを確認することもできます。ARN がリストされていない場合は、ポリシーを編集して、リストされた ARN を追加、削除、または変更することができます。詳細については、「IAM ポリシーの編集」および IAM ポリシーを作成する を参照してください。

  6. Envoy プロキシを含むタスク定義ごとに、上記の手順を繰り返します。

Amazon EC2
  1. Amazon EC2 コンソールから、左側のナビゲーションで [インスタンス] を選択します。

  2. Envoy プロキシをホストするインスタンスの 1 つを選択します。

  3. [説明] タブで、IAM ロールの右側にある IAM ロール名のリンクを選択します。IAM ロールがリストされていない場合、IAM ロールを作成する必要があります。

  4. [概要] ページの [アクセス許可] タブで、以前に作成したカスタムポリシー、または AWSAppMeshEnvoyAccess マネージドポリシーのいずれかが一覧表示されていることを確認します。どちらのポリシーもアタッチされていない場合は、IAM ポリシーを IAM ロールにアタッチします。カスタム IAM ポリシーをアタッチしたいが持っていない場合は、カスタム IAM ポリシーを作成します。カスタム IAM ポリシーが添付されている場合は、ポリシーを選択し、そこに "Action": "appmesh:StreamAggregatedResources" が含まれていることを確認します。そうでない場合は、そのアクセス許可をカスタム IAM ポリシーに追加する必要があります。また、特定のメッシュエンドポイントに適切な Amazon リソースネーム (ARN) が表示されていることを確認することもできます。ARN がリストされていない場合は、ポリシーを編集して、リストされた ARN を追加、削除、または変更することができます。詳細については、「IAM ポリシーの編集」および IAM ポリシーを作成する を参照してください。

  5. Envoy プロキシをホストしているインスタンスごとに、上記の手順を繰り返します。