AWS フォールト・インジェクション・サービス・ポリシーの例 - AWS フォールト・インジェクション・サービス

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

AWS フォールト・インジェクション・サービス・ポリシーの例

デフォルトでは、ユーザーとロールには AWS FIS リソースを作成または変更する権限がありません。また、、 AWS Command Line Interface (AWS CLI) AWS Management Console、 AWS API を使用してタスクを実行することもできません。IAM 管理者は、リソースで必要なアクションを実行するための権限をユーザーに付与する IAM ポリシーを作成できます。その後、管理者はロールに IAM ポリシーを追加し、ユーザーはロールを引き受けることができます。

これらサンプルの JSON ポリシードキュメントを使用して、IAM アイデンティティベースのポリシーを作成する方法については、IAM ユーザーガイドの「IAM ポリシーの作成」を参照してください。

各リソースタイプの ARN の形式など、 AWS FIS によって定義されるアクションとリソースタイプの詳細については、『サービス認証リファレンス』の「AWS フォールトインジェクションサービスのアクション、リソース、および条件キー」を参照してください。

ポリシーのベストプラクティス

ID ベースのポリシーは、アカウント内の AWS FIS リソースを誰かが作成、アクセス、または削除できるかどうかを決定します。これらのアクションを実行すると、 AWS アカウントに料金が発生する可能性があります。アイデンティティベースのポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください。

  • AWS 管理ポリシーから始めて、最小権限の権限に移行する — ユーザーとワークロードへの権限の付与を開始するにはAWS 多くの一般的なユースケースで権限を付与する管理ポリシーを使用してください。これらのポリシーは、で利用できます。 AWS アカウント AWS ユースケースに固有のカスタマー管理ポリシーを定義して、権限をさらに減らすことをお勧めします。詳細については、「IAM ユーザーガイド」の「AWS マネージドポリシー」または「AWS ジョブ機能の管理ポリシー」を参照してください。

  • 最小特権を適用する – IAM ポリシーで許可を設定するときは、タスクの実行に必要な許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、 最小特権アクセス許可 とも呼ばれています。IAM を使用して許可を適用する方法の詳細については、「IAM ユーザーガイド」の「IAM でのポリシーとアクセス許可」を参照してください。

  • IAM ポリシーで条件を使用してアクセスをさらに制限する – ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。サービスアクションがなどの特定の用途で使用された場合は AWS のサービス、条件を使用してサービスアクションへのアクセスを許可することもできます AWS CloudFormation。詳細については、「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) が必要 — IAM ユーザーまたは root ユーザーを必要とするシナリオがある場合は AWS アカウント、セキュリティを強化するために MFA をオンにしてください。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、「IAM ユーザーガイド」の「MFA 保護 API アクセスの設定」を参照してください。

IAM でのベストプラクティスの詳細については、「IAM ユーザーガイド」の「IAM でのセキュリティのベストプラクティス」を参照してください。

例:FIS コンソールを使用する AWS

AWS フォールト・インジェクション・サービス・コンソールにアクセスするには、最低限の権限が必要です。これらの権限により、内の AWS FIS リソースに関する詳細を一覧表示および表示できる必要があります。 AWS アカウント最小限必要な許可よりも制限が厳しいアイデンティティベースのポリシーを作成すると、そのポリシーを持つエンティティ (ユーザーまたはロール) に対してコンソールが意図したとおりに機能しません。

AWS CLI または AWS API のみを呼び出すユーザーには、最低限のコンソール権限を付与する必要はありません。代わりに、実行しようとしている API オペレーションに一致するアクションのみへのアクセスが許可されます。

次のポリシー例では、FIS コンソールを使用してすべての AWS FIS リソースを一覧表示および表示する権限を付与しますが、作成、更新、 AWS 削除は許可しません。また、実験テンプレートで指定できるすべての AWS FIS アクションで使用可能なリソースを表示する権限も付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "FISReadOnlyActions", "Effect": "Allow", "Action": [ "fis:List*", "fis:Get*" ], "Resource": "*" }, { "Sid": "AdditionalReadOnlyActions", "Effect": "Allow", "Action": [ "ssm:Describe*", "ssm:Get*", "ssm:List*", "ec2:DescribeInstances", "rds:DescribeDBClusters", "ecs:DescribeClusters", "ecs:ListContainerInstances", "eks:DescribeNodegroup", "cloudwatch:DescribeAlarms", "iam:ListRoles" ], "Resource": "*" }, { "Sid": "PermissionsToCreateServiceLinkedRole", "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "fis.amazonaws.com" } } } ] }

例:使用可能な AWS FIS アクションを一覧表示する

次のポリシーは、使用可能な AWS FIS アクションを一覧表示する権限を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "fis:ListActions" ], "Resource": "arn:aws:fis:*:*:action/*" } ] }

例 : 特定のアクションの実験テンプレートを作成する

次のポリシーでは、アクション aws:ec2:stop-instances の実験テンプレートを作成する権限を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PolicyExample", "Effect": "Allow", "Action": [ "fis:CreateExperimentTemplate" ], "Resource": [ "arn:aws:fis:*:*:action/aws:ec2:stop-instances", "arn:aws:fis:*:*:experiment-template/*" ] }, { "Sid": "PolicyPassRoleExample", "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::account-id:role/role-name" ] } ] }

例 : 実験を開始する

次のポリシーは、指定した IAM ロールと実験テンプレートを使用して実験を開始するアクセス権限を付与します。また、 AWS FIS がユーザーに代わってサービスにリンクされたロールを作成することもできます。詳細については、「フォールトインジェクションサービスには、サービスにリンクされたロールを使用してください。 AWS」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PolicyExample", "Effect": "Allow", "Action": [ "fis:StartExperiment" ], "Resource": [ "arn:aws:fis:*:*:experiment-template/experiment-template-id", "arn:aws:fis:*:*:experiment/*" ] }, { "Sid": "PolicyExampleforServiceLinkedRole", "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "*", "Condition": { "StringEquals": { "iam:AWSServiceName": "fis.amazonaws.com" } } } ] }

例 : タグを使用してリソースの使用量を制御する

次のポリシーは、Purpose=Test タグを持つ実験テンプレートから実験を実行するアクセス権限を付与します。実験テンプレートを作成または変更するアクセス権限は付与されず、指定したタグを持たないテンプレートを使用して実験を実行することはできません。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "fis:StartExperiment", "Resource": "arn:aws:fis:*:*:experiment-template/*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Test" } } } ] }

例 : 特定のタグを持つ実験テンプレートを削除する

次のポリシーでは、Purpose=Test タグ付きの実験テンプレートを削除する権限を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "fis:DeleteExperimentTemplate" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Test" } } } ] }

例: ユーザーにそれぞれのアクセス権限の表示を許可する

この例では、ユーザーアイデンティティに添付されたインラインおよびマネージドポリシーの表示を IAM ユーザーに許可するポリシーを作成する方法を示します。このポリシーには、コンソールで、またはまたは API を使用してこのアクションをプログラム的に実行するための権限が含まれています。 AWS CLI AWS

{ "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": "*" } ] }

例: ec2:InjectApiError の条件キーを使用します。

次の例のポリシーでは、ec2:FisTargetArns 条件キーを使用してターゲットリソースの範囲を制限します。 AWS このポリシーは FIS アクションとを許可します。aws:ec2:api-insufficient-instance-capacity-error aws:ec2:asg-insufficient-instance-capacity-error

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "ec2:InjectApiError", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "ec2:FisActionId": [ "aws:ec2:api-insufficient-instance-capacity-error", ], "ec2:FisTargetArns": [ "arn:aws:iam:*:*:role:role-name" ] } } }, { "Effect": "Allow", "Action": "ec2:InjectApiError", "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "ec2:FisActionId": [ "aws:ec2:asg-insufficient-instance-capacity-error" ], "ec2:FisTargetArns": [ "arn:aws:autoscaling:*:*:autoScalingGroup:uuid:autoScalingGroupName/asg-name" ] } } }, { "Effect": "Allow", "Action": "autoscaling:DescribeAutoScalingGroups", "Resource": "*" } ] }

例: aws:s3:bucket-pause-replication の条件キーを使用します。

以下のポリシー例では、FIS PutReplicationConfiguration アクションのコンテキストで AWS FIS S3:IsReplicationPauseRequest GetReplicationConfiguration が許可する場合にのみ条件キーを使用しています。 AWS aws:s3:bucket-pause-replication

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "S3:PauseReplication" ], "Resource": "arn:aws:s3:::mybucket", "Condition": { "StringEquals": { "s3:DestinationRegion": "region" } } }, { "Effect": "Allow", "Action": [ "S3:PutReplicationConfiguration", "S3:GetReplicationConfiguration" ], "Resource": "arn:aws:s3:::mybucket", "Condition": { "BoolIfExists": { "s3:IsReplicationPauseRequest": "true" } } }, { "Effect": "Allow", "Action": [ "S3:ListBucket" ], "Resource": "arn:aws:s3:::*" }, { "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": "*" } ] }

例: aws:dynamodb:encrypted-global-table-pause-replication を実行するアクセス許可のある実験ロール。

次のポリシー例では、1 つのアクションで実験を実行するために必要な権限を AWS FIS に付与しています。aws:dynamodb:encrypted-global-table-pause-replication

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DynamoDB", "Effect": "Allow", "Action": [ "dynamodb:DescribeTable", "dynamodb:DescribeGlobalTable" ], "Resource": [ "arn:aws:dynamodb:us-east-2:123456789012:table/MyEncryptedGlobalTable" ], "Condition": { "StringEquals": { "aws:ResourceTag/fis-enabled": "true" } } }, { "Sid": "Tagging", "Effect": "Allow", "Action": [ "tag:GetResources" ], "Resource": [ "*" ] }, { "Sid": "KMS", "Effect": "Allow", "Action": [ "kms:PutKeyPolicy", "kms:DescribeKey", "kms:GetKeyPolicy" ], "Resource": "arn:aws:kms:us-east-2:123456789012:key/MyGlobalTableEncryptionKey" }, "Condition": { "StringEquals": { "aws:ResourceTag/fis-enabled": "true" } } ] }
注記

AWS FIS kms:PutKeyPolicy AWS KMS は顧客管理キーへの DynamoDB へのアクセスを拒否し、これによりレプリケーションを停止します。このアクションにより実験がアクティブに実行されている場合にのみこのロールを使用し、それ以外の場合は、削除することをお勧めします。ロールを削除すると、kms:PutKeyPolicy への FIS アクセス許可が削除されます。実験が完了した後、実験テンプレートの詳細でロールを検索します。IAM コンソールで IAM ロールへのリンクを選択し、[削除] を選択します。ロールを削除したら、 AWS KMS コンソールに移動し、ターゲット DynamoDB AWS KMS テーブル内のデータを保護するために使用されるキーを見つけます。 AWS KMS キーポリシーが期待どおりであることを確認します。 AWS FIS ステートメント (例:) は表示されなくなるはずです。FIS_DDB_PAUSE_REPLICATION-EXP123456789012345_DO_NOT_MODIFY

FIS aws:dynamodb:encrypted-global-table-pause-replication アクションは、ターゲットの DynamoDB グローバルテーブルのデータを保護するために使用される KMS キーのポリシーに次のアクセス許可を動的に追加します。

{ "Sid": "DO_NOT_MODIFY_FIS_DDB_PAUSE_REPLICATION-EXP123456789012345", "Effect": "Deny", "Principal": { "AWS": "arn:aws:iam::123456789012:role/aws-service-role/replication.dynamodb.amazonaws.com/AWSServiceRoleForDynamoDBReplication" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:dynamodb:tableName": [ "transactions-global-table", "inventory-global-table" ] } } }

これらの権限は、 AWS KMS 既存のキーポリシードキュメントの最後に追加されます。上記のポリシーステートメントは、kms:EncryptionContext:aws:dynamodb:tableName コンテキストキーに一覧表示されているテーブルとの間でデータをレプリケートするための DynamoDB サービスリンクロールのアクセス許可を削除します。上記の例では、transaction-global-tableinventory-global-table という名前の DynamoDB グローバルテーブルのレプリケーションが停止します。