AWS Health と IAM の連携方法
AWS Health へのアクセスを管理するために IAM を使用する前に、AWS Health でどの IAM特徴が使用できるかを理解しておく必要があります。AWS Health およびその他の AWS のサービスが IAM と連携する方法の概要を把握するには、IAM ユーザーガイドの「IAM と連携する AWS のサービス」を参照してください。
AWS Health アイデンティティベースのポリシー
IAM アイデンティティベースのポリシーでは、許可または拒否されたアクションとリソースを指定でき、さらにアクションが許可または拒否された条件を指定できます。AWS Health は、特定のアクション、リソース、および条件キーをサポートします。JSON ポリシーで使用するすべての要素については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素のリファレンス」を参照してください。
アクション
管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどんなリソースにどんな条件でアクションを実行できるかということです。
JSON ポリシーのAction
要素には、ポリシー内のアクセスを許可または拒否するために使用できるアクションが記述されます。ポリシーアクションの名前は通常、関連する AWS API オペレーションと同じです。一致する API オペレーションのない許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加アクションは、依存アクションと呼ばれます。
このアクションは、関連付けられたオペレーションを実行するためのアクセス許可を付与するポリシーで使用されます。
AWS Health のポリシーアクションは、アクションの前に次のプレフィックスを使用します: health:
。たとえば、DescribeEventDetails API オペレーションを使用して、指定したイベントに関する詳細情報を表示するアクセス許可をユーザーに付与するには、ポリシーに heath:DescribeEventDetails
アクションを含めます。
ポリシーステートメントには、Action
要素または NotAction
要素を含める必要があります。AWS Health は、このサービスで実行できるタスクを記述する一連の独自のアクションを定義します。
単一のステートメントに複数の アクションを指定するには、次のようにコンマで区切ります。
"Action": [ "health:action1", "health:action2"
ワイルドカード *を使用して複数のアクションを指定することができます。たとえば、Describe
という単語で始まるすべてのアクションを指定するには、以下のアクションを含めます。
"Action": "health:Describe*"
AWS Health アクションのリストを表示するには、IAM ユーザーガイドの「AWS Health によって定義されたアクション」をご参照ください。
リソース
管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースにどのような条件でアクションを実行できるかということです。
Resource
JSON ポリシー要素は、アクションが適用されるオブジェクトを指定します。ステートメントには、Resource
または NotResource
要素を含める必要があります。ベストプラクティスとして、Amazon リソースネーム (ARN) を使用してリソースを指定します。これは、リソースレベルの許可と呼ばれる特定のリソースタイプをサポートするアクションに対して実行できます。
オペレーションのリスト化など、リソースレベルの権限をサポートしないアクションの場合は、ステートメントがすべてのリソースに適用されることを示すために、ワイルドカード (*) を使用します。
"Resource": "*"
AWS Health イベントには、次の Amazon リソースネーム (ARN) 形式があります。
arn:${Partition}:health:*::event/
service
/event-type-code
/event-ID
たとえば、ステートメントで EC2_INSTANCE_RETIREMENT_SCHEDULED_ABC123-DEF456
イベントを指定するには、次の ARN を使用します。
"Resource": "arn:aws:health:*::event/EC2/EC2_INSTANCE_RETIREMENT_SCHEDULED/EC2_INSTANCE_RETIREMENT_SCHEDULED_ABC123-DEF456"
特定のアカウントに属する Amazon EC2 のすべての AWS Health イベントを指定するには、ワイルドカード (*) を使用します。
"Resource": "arn:aws:health:*::event/EC2/*/*"
ARN の形式の詳細については、「Amazon リソースネーム (ARN) と AWS サービスの名前空間」を参照してください。
一部の AWS Health アクションは、特定のリソースに対して実行できません。このような場合は、ワイルドカード *を使用する必要があります。
"Resource": "*"
AWS Health API オペレーションは複数のリソースと関連します。たとえば、DescribeEvents オペレーションは、指定したフィルター条件を満たすイベントに関する情報を返します。これは、IAM ユーザーがこのイベントを表示するためのアクセス許可を持っている必要があることを意味します。
複数リソースを単一ステートメントで指定するには、ARN をカンマで区切ります。
"Resource": [ "resource1", "resource2"
AWS Health は、ヘルスイベントに対するリソースレベルのアクセス許可のみをサポートし、DescribeAffectedEntities および DescribeEventDetails API オペレーションに対してのみサポートしています。詳細については、「リソースおよびアクションに基づく条件」を参照してください。
AWS Health リソースタイプとその ARN のリストを表示するには、IAM ユーザーガイドのAWS Health で定義されるリソースを参照してください。どのアクションで各リソースの ARN を指定できるかについては、AWS Health で定義されるアクションを参照してください。
条件キー
管理者は AWS JSON ポリシーを使用して、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどんなリソースにどんな条件でアクションを実行できるかということです。
Condition
要素 (または Condition
ブロック) を使用すると、ステートメントが有効な条件を指定できます。Condition
要素はオプションです。イコールや未満などの 条件演算子 を使用して条件式を作成することで、ポリシーの条件とリクエスト内の値を一致させることができます。
1 つのステートメントに複数の Condition
要素を指定する場合、または 1 つの Condition
要素に複数のキーを指定する場合、AWSでは AND
論理演算子を使用してそれらを評価します。単一の条件キーに複数の値を指定する場合、AWS では OR
論理演算子を使用して条件を評価します。ステートメントの権限が付与される前にすべての条件が満たされる必要があります。
条件を指定する際にプレースホルダー変数も使用できます。例えば IAM ユーザーに、IAM ユーザー名がタグ付けされている場合のみリソースにアクセスできる権限を付与することができます。詳細については、IAM ユーザーガイドのIAM ポリシーの要素: 変数およびタグを参照してください。
AWS はグローバル条件キーとサービス固有の条件キーをサポートしています。すべての AWS グローバル条件キーを確認するには、IAM ユーザーガイドの「AWS グローバル条件コンテキストキー」をご参照ください。
AWS Health は独自の条件キーを定義し、一部のグローバル条件キーの使用をサポートしています。すべてのAWSグローバル条件キーを確認するには、IAM ユーザーガイドの「AWS グローバル条件コンテキストキー」を参照してください。
DescribeAffectedEntities および DescribeEventDetails API オペレーションは health:eventTypeCode
および health:service
条件キーをサポートしています。
AWS Health 条件キーのリストを確認するには、IAM ユーザーガイドの「AWS Health の条件キー」を参照してください。どのアクションおよびリソースと条件キーを使用できるかについては、「AWS Health で定義されるアクション」を参照してください。
例
AWS Health アイデンティティベースのポリシーの例を表示するには、AWS Health アイデンティティベースポリシーの例を参照してください。
AWS Health リソースベースのポリシー
リソースベースのポリシーは、指定したプリンシパルが AWS Health リソースに対して実行できるアクションと実行の条件を指定する JSON ポリシードキュメントです。AWS Health は、ヘルスイベントのリソースベースのアクセス許可ポリシーをサポートしています。リソースベースのポリシーでは、リソースごとに他の アカウントに使用許可を付与することができます。リソースベースのポリシーを使用して、AWS Health イベントへのアクセスを AWS のサービスに許可することもできます。
クロスアカウントアクセスを有効にするには、アカウント全体、または別のアカウントの IAM エンティティをリソースベースのポリシーのプリンシパルとして指定します。リソースベースのポリシーにクロスアカウントのプリンシパルを追加しても、信頼関係は半分しか確立されない点に注意してください。プリンシパルとリソースが異なる AWS アカウントにある場合は、リソースにアクセスするためのアクセス許可をプリンシパルエンティティにも付与する必要があります。アクセス許可は、アイデンティティベースのポリシーをエンティティにアタッチすることで付与します。ただし、リソースベースのポリシーで、同じアカウントのプリンシパルへのアクセス権が付与されている場合は、ID ベースのポリシーをさらに付与する必要はありません。詳細については、IAM ユーザーガイドの「IAM ロールとリソースベースのポリシーとの相違点」を参照してください。
AWS Health は、DescribeAffectedEntities および DescribeEventDetails API オペレーションのリソースベースのポリシーのみをサポートしています。ポリシーでこれらのアクションを指定して、AWS Health イベントに対してアクションを実行できるプリンシパルエンティティ (アカウント、ユーザー、ロール、フェデレーティッドユーザー) を定義できます。
例
AWS Health リソースベースのポリシーの例については、「リソースおよびアクションに基づく条件」を参照してください。
AWS Health タグに基づく認可
AWS Health は、リソースのタグ付けやタグに基づいたアクセスの制御をサポートしていません。
AWS Health IAM ロール
IAM ロールは AWS アカウント内のエンティティで、特定の許可を持っています。
AWS Health でのテンポラリ認証情報の使用
一時的な認証情報を使用して、フェデレーションでサインイン、IAM ロールを引き受ける、またはクロスアカウントロールを引き受けることができます。一時的なセキュリティ認証情報を取得するには、AssumeRole または GetFederationToken などの AWS STS API オペレーションを呼び出します。
AWS Health では、一時認証情報の使用をサポートしています。
サービスにリンクされたロール
サービスリンクロールは、AWS サービスが他のサービスのリソースにアクセスしてお客様の代わりにアクションを完了することを許可します。サービスリンクロールは IAM アカウント内に表示され、サービスによって所有されます。IAM 管理者は、サービスリンクロールの許可を表示できますが、編集することはできません。
AWS Health は、AWS Organizations と統合するサービスリンクロールをサポートしています。サービスにリンクされたロールは、AWSServiceRoleForHealth_Organizations
と呼ばれます。ロールには AWSHealth_OrganizationsServiceRolePolicy
EnableHealthServiceAccessForOrganization オペレーションを使用して、アカウントにサービスリンクされたロールを作成できます。ただし、この機能を無効にする場合は、まず DisableHealthServiceAccessForOrganization オペレーションを呼び出す必要があります。その後、IAM コンソール、IAM API、または AWS Command Line Interface (AWS CLI) を使用してロールを削除できます。詳細については、IAM ユーザーガイドの「サービスリンクロールの使用」を参照してください。
詳細については、「複数のアカウントにわたる AWS Health イベントを集計する」を参照してください。
サービスロール
この機能により、ユーザーに代わってサービスがサービスロールを引き受けることが許可されます。このロールにより、サービスがお客様に代わって他のサービスのリソースにアクセスし、アクションを完了することが許可されます。サービスロールは、IAM アカウントに表示され、アカウントによって所有されます。つまり、IAM 管理者は、このロールの権限を変更できます。ただし、それにより、サービスの機能が損なわれる場合があります。
AWS Health はサービスロールをサポートしていません。