AWS Health アイデンティティベースポリシーの例
デフォルトでは、IAM ユーザーおよびロールには、AWS Health リソースを作成または変更するアクセス許可はありません。また、AWS Management Console や AWS CLI、AWS API を使用してタスクを実行することもできません。IAM 管理者は、ユーザーとロールに必要な、指定されたリソースで特定の API オペレーションを実行する権限をユーザーとロールに付与する IAM ポリシーを作成する必要があります。続いて、管理者はそれらの権限が必要な IAM ユーザーまたはグループにそのポリシーをアタッチする必要があります。
JSON ポリシードキュメントのこれらの例を使用して、IAM アイデンティティベースのポリシーを作成する方法については、「IAM ユーザーガイド」の「JSON タブでのポリシーの作成」を参照してください。
トピック
ポリシーのベストプラクティス
ID ベースのポリシーは、ユーザーのアカウントで誰かが AWS Health リソースを作成、アクセス、または削除できるどうかを決定します。これらのアクションを実行すると、AWS アカウント に料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:
-
AWS マネージドポリシーを使用して開始し、最小特権の許可に移行する – ユーザーとワークロードへの許可の付与を開始するには、多くの一般的なユースケースのために許可を付与する AWS マネージドポリシーを使用します。これらは AWS アカウントで使用できます。ユースケースに応じた AWS カスタマー管理ポリシーを定義することで、許可をさらに減らすことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWSマネージドポリシー」または「ジョブ機能の AWS マネージドポリシー」を参照してください。
-
最小特権を適用する – IAM ポリシーで許可を設定する場合は、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、IAM ユーザーガイドのIAM でのポリシーとアクセス許可を参照してください。
-
IAM ポリシーで条件を使用してアクセスをさらに制限する - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。また、AWS CloudFormation などの特定の AWS のサービス を介して使用する場合、条件を使用してサービスアクションへのアクセスを許可することもできます。詳細については、「IAM ユーザーガイド」の [IAM JSON policy elements: Condition] (IAM JSON ポリシー要素:条件) を参照してください。
-
IAM Access Analyzer を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する - IAM Access Analyzer は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、「IAM ユーザーガイド」の「IAM Access Analyzer でポリシーを検証する」を参照してください。
-
多要素認証 (MFA) を要求する – AWS アカウント で IAM ユーザーまたはルートユーザーを要求するシナリオがある場合は、セキュリティを強化するために MFA をオンにします。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、「IAM ユーザーガイド」の「MFA を使用した安全な API アクセス」を参照してください。
IAM でのベストプラクティスの詳細については、IAM ユーザーガイドのIAM でのセキュリティのベストプラクティスを参照してください。
AWS Health コンソールを使用する
AWS Health コンソールにアクセスするには、最小限の許可セットが必要です。これらの許可により、AWS アカウントの AWS Health リソースに関する詳細を一覧表示および表示できるようにする必要があります。最小限必要なアクセス許可よりも制限されたアイデンティティベースポリシーを作成すると、そのポリシーをアタッチしたエンティティ (IAM ユーザーまたはロール) に対してはコンソールが意図したとおりに機能しません。
これらのエンティティが AWS Health コンソールを使用できるように、次の AWS 管理ポリシー、AWSHealthFullAccess
AWSHealthFullAccess
ポリシーでは、エンティティは次のものへのフルアクセスが付与されます。
-
AWS 組織内のすべてのアカウントに対する AWS Health 組織ビュー機能の有効化または無効化
-
AWS Health コンソール内の AWS Health Dashboard
-
AWS Health API オペレーションと通知
-
AWS 組織の一部であるアカウントに関する情報の表示
-
管理アカウントの組織単位 (OU) の表示
例 : AWSHealthFullAccess
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringEquals": { "organizations:ServicePrincipal": "health.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "health:*", "organizations:DescribeAccount", "organizations:ListAccounts", "organizations:ListDelegatedAdministrators", "organizations:ListParents" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "health.amazonaws.com" } } } ] }
注記
また、Health_OrganizationsServiceRolePolicy
AWSマネージドポリシーを使用して、AWS Healthが組織内の他のアカウントのイベントを表示するようにできます。詳細については、「AWS Health のサービスにリンクされたロールの使用」を参照してください。
AWS CLI または AWS API のみを呼び出すユーザーには、最小限のコンソールアクセス許可を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。
詳細については、「IAM ユーザーガイド」の「ユーザーへのアクセス許可の追加」を参照してください。
自分の権限の表示をユーザーに許可する
この例では、ユーザーアイデンティティにアタッチされたインラインおよびマネージドポリシーの表示を IAM ユーザーに許可するポリシーの作成方法を示します。このポリシーには、コンソールで、または AWS CLI か AWS API を使用してプログラム的に、このアクションを完了する権限が含まれています。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ViewOwnUserInfo", "Effect": "Allow", "Action": [ "iam:GetUserPolicy", "iam:ListGroupsForUser", "iam:ListAttachedUserPolicies", "iam:ListUserPolicies", "iam:GetUser" ], "Resource": ["arn:aws:iam::*:user/${aws:username}"] }, { "Sid": "NavigateInConsole", "Effect": "Allow", "Action": [ "iam:GetGroupPolicy", "iam:GetPolicyVersion", "iam:GetPolicy", "iam:ListAttachedGroupPolicies", "iam:ListGroupPolicies", "iam:ListPolicyVersions", "iam:ListPolicies", "iam:ListUsers" ], "Resource": "*" } ] }
AWS Health Dashboard および AWS Health API へのアクセス
AWS Health Dashboard は、すべての AWS アカウントで使用できます。AWS Health API は、ビジネス、エンタープライズオンランプ、またはエンタープライズサポートプランのアカウントでのみ使用できます。詳細については、「AWS Support
IAM を使用してエンティティ (ユーザー、グループ、またはロール) を作成し、これらのエンティティに対して AWS Health Dashboard と AWS Health API へのアクセス許可を付与できます。
デフォルトでは、IAM ユーザーは AWS Health Dashboard または AWS Health API にアクセスできません。アカウントの AWS Health 情報へのアクセス権をユーザーに付与するには、単一のユーザー、ユーザーグループ、またはロールに対して IAM ポリシーをアタッチします。詳細については、「ID (ユーザー、グループ、ロール)」と「IAM ポリシーの概要」を参照してください。
IAM ユーザーを作成したら、これらのユーザーに個別のパスワードを付与できます。ユーザーは、アカウント固有のサインインページを使用して、アカウントにサインインし、AWS Health の情報を表示できます。詳細については、「ユーザーがアカウントにサインインする方法」を参照してください。
注記
AWS Health Dashboard を表示するアクセス許可を持つ IAM ユーザーには、アカウントのすべての AWS のサービス間でヘルス情報への読み取り専用アクセスが許可されます。これには、Amazon EC2 インスタンス ID などの AWS リソース ID、EC2 インスタンスの IP アドレス、および一般的なセキュリティ通知が含まれる場合がありますが、これらに限りません。
例えば、IAM ポリシーで AWS Health Dashboard および AWS Health API へのアクセスのみが許可される場合、ポリシーが適用されるユーザーまたはロールは、他の IAM ポリシーでそのアクセスを許可していない場合でも、AWS のサービスまたは関連リソースに関して投稿されたすべての情報にアクセスできます。
AWS Health には、2 つの API グループを使用できます。
-
個々のアカウント – DescribeEvents および DescribeEventDetails などのオペレーションを使用して、アカウントの AWS Health イベントに関する情報を取得できます。
-
組織アカウント – DescribeEventsForOrganization および DescribeEventDetailsForOrganization などのオペレーションを使用して、組織の一部であるアカウントの AWS Health イベントに関する情報を取得できます。
使用可能な API オペレーションの詳細については、AWS Health API リファレンスを参照してください。
個々のアクション
IAM ポリシーの Action
エレメントを health:Describe*
に設定できます。これにより、AWS Health Dashboard および AWS Health にアクセスできます。AWS Health は、eventTypeCode
およびサービスに基づくイベントへのアクセスコントロールをサポートしています。
アクセスの説明
このポリシーステートメントは AWS Health Dashboard およびすべての Describe*
AWS Health API オペレーションへのアクセスを許可します。例えば、このポリシーを持つ IAM ユーザーは、AWS Management Console の AWS Health Dashboard にアクセスし、AWS Health DescribeEvents
API オペレーションを呼び出すことができます。
例 : アクセスの説明
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "health:Describe*" ], "Resource": "*" }] }
アクセスを拒否する
次のポリシーステートメントでは、AWS Health Dashboard と AWS Health API へのアクセスを拒否します。このポリシーを持つ IAM ユーザーは、AWS Management Console で AWS Health Dashboard を表示できません。また、AWS Health API オペレーションを呼び出すこともできません。
例 : アクセスを拒否する
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "health:*" ], "Resource": "*" }] }
組織ビュー
AWS Health の組織ビューを有効にする場合は、AWS Health および AWS Organizations アクションへアクセスを許可する必要があります。
IAM ポリシーの Action
要素には、次のアクセス許可を含める必要があります。
-
iam:CreateServiceLinkedRole
-
organizations:EnableAWSServiceAccess
-
organizations:DescribeAccount
-
organizations:DisableAWSServiceAccess
-
organizations:ListAccounts
-
organizations:ListDelegatedAdministrators
-
organizations:ListParents
各 API に必要な正確な権限を確認するには、IAM ユーザーガイドの AWS Health APIs and Notifications で定義されるアクションを参照してください。
注記
AWS Organizations の AWS Health API にアクセスするには、組織の管理アカウントの認証情報を使用する必要があります。詳細については、「複数のアカウントにわたる AWS Health イベントを集計する」を参照してください。
AWS Health 組織ビューへのアクセス許可
このポリシーステートメントは、組織ビュー機能に必要なすべての AWS Health および AWS Organizations アクションへのアクセスを許可します。
例 : AWS Health 組織ビューへのアクセスを許可する
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringEquals": { "organizations:ServicePrincipal": "health.amazonaws.com" } } }, { "Effect": "Allow", "Action": [ "health:*", "organizations:DescribeAccount", "organizations:ListAccounts", "organizations:ListDelegatedAdministrators", "organizations:ListParents" ], "Resource": "*" }, { "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/health.amazonaws.com/AWSServiceRoleForHealth*" } ] }
AWS Health 組織ビューへのアクセス拒否
このポリシーステートメントは、AWS Organizations アクションへのアクセスを拒否しますが、個々のアカウントの AWS Health アクションへのアクセスを許可します。
例 : AWS Health 組織ビューへのアクセスを拒否する
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "health:*" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "organizations:EnableAWSServiceAccess", "organizations:DisableAWSServiceAccess" ], "Resource": "*", "Condition": { "StringEquals": { "organizations:ServicePrincipal": "health.amazonaws.com" } } }, { "Effect": "Deny", "Action": [ "organizations:DescribeAccount", "organizations:ListAccounts", "organizations:ListDelegatedAdministrators", "organizations:ListParents" ], "Resource": "*" }, { "Effect": "Deny", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/health.amazonaws.com/AWSServiceRoleForHealth*" } ] }
注記
アクセス許可を付与する先のユーザーまたはグループに IAM ポリシーが既にある場合は、そのポリシーに対して、ここに示した AWS Health 固有のポリシーステートメントを追加できます。
リソースおよびアクションに基づく条件
AWS Health は、 DescribeAffectedEntities および DescribeEventDetails API オペレーションに対する IAM 条件をサポートしています。リソースベースおよびアクションベースの条件を使用して、AWS Health API がユーザー、グループ、またはロールに送信するイベントを制限できます。
これを行うには、IAM ポリシーの Condition
ブロックを更新するか、Resource
要素を設定します。文字列条件を使用して、特定の AWS Health イベントフィールドに基づいてアクセスを制限できます。
ポリシーに AWS Health イベントを指定する場合、次のフィールドを使用できます。
-
eventTypeCode
-
service
メモ
-
DescribeAffectedEntities および DescribeEventDetails API オペレーションは、リソースレベルのアクセス許可をサポートしています。例えば、特定の AWS Health イベントを許可または拒否するポリシーを作成できます。
-
DescribeAffectedEntitiesForOrganization および DescribeEventDetailsForOrganization APIオペレーションは、リソースレベルのアクセス許可をサポートしていません。
-
詳細については、サービス承認リファレンスの AWS Health APIs and Notifications のアクション、リソース、条件キーを参照してください。
例 : アクションベースの条件
このポリシーステートメントは、AWS Health Dashboard および AWS Health Describe*
API オペレーションへのアクセスは許可しますが、Amazon EC2 に関連する AWS Health イベントへのアクセスは拒否します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "health:Describe*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "health:DescribeAffectedEntities", "health:DescribeEventDetails" ], "Resource": "*", "Condition": { "StringEquals": { "health:service": "EC2" } } } ] }
例 : リソースベースの条件
次のポリシーでも結果は同じですが、Resource
要素を代わりに使用しています。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "health:Describe*" ], "Resource": "*" }, { "Effect": "Deny", "Action": [ "health:DescribeEventDetails", "health:DescribeAffectedEntities" ], "Resource": "arn:aws:health:*::event/EC2/*/*" }] }
例 : eventTypeCode の条件
このポリシーステートメントは、AWS Health Dashboard および AWS Health Describe*
API オペレーションへのアクセスは許可されますが、AWS_EC2_*
と一致する eventTypeCode
を持つ AWS Health イベントへのアクセスは拒否されます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "health:Describe*", "Resource": "*" }, { "Effect": "Deny", "Action": [ "health:DescribeAffectedEntities", "health:DescribeEventDetails" ], "Resource": "*", "Condition": { "StringLike": { "health:eventTypeCode": "AWS_EC2_*" } } } ] }
重要
DescribeAffectedEntities および DescribeEventDetails オペレーションを呼び出して、AWS Health イベントへのアクセス許可がない場合、AccessDeniedException
エラーが表示されます。詳細については、「AWS Health ID とアクセスのトラブルシューティング」を参照してください。