Amazon Timestream for LiveAnalytics アイデンティティベースのポリシーの例 - Amazon Timestream

Amazon Timestream for LiveAnalytics に類似した機能をご希望の場合は Amazon Timestream for InfluxDB をご検討ください。リアルタイム分析に適した、シンプルなデータインジェストと 1 桁ミリ秒のクエリ応答時間を特徴としています。詳細については、こちらを参照してください。

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

Amazon Timestream for LiveAnalytics アイデンティティベースのポリシーの例

デフォルトでは、IAM ユーザーおよびロールには、Timestream for LiveAnalytics リソースを作成または変更する権限はありません。また、、CQLSH AWS マネジメントコンソール、、 AWS CLIまたは AWS API を使用してタスクを実行することはできません。IAM 管理者は、ユーザーとロールに必要な、指定されたリソースで特定の API オペレーションを実行する権限をユーザーとロールに付与する IAM ポリシーを作成する必要があります。続いて、管理者はそれらの権限が必要な IAM ユーザーまたはグループにそのポリシーをアタッチする必要があります。

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

ポリシーに関するベストプラクティス

アイデンティティベースポリシーは、アカウントで、あるユーザーが Timestream for LiveAnalytics リソースを作成、アクセス、または削除できるかどうかを決定します。これらのアクションでは、 AWS アカウントに費用が発生する場合があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:

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

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

  • IAM ポリシーで条件を使用してアクセスをさらに制限する - ポリシーに条件を追加して、アクションやリソースへのアクセスを制限できます。たとえば、ポリシー条件を記述して、すべてのリクエストを SSL を使用して送信するように指定できます。条件を使用して、サービスアクションが などの特定の を通じて使用されている場合に AWS のサービス、サービスアクションへのアクセスを許可することもできます CloudFormation。詳細については、IAM ユーザーガイドIAM JSON ポリシー要素:条件 を参照してください。

  • IAM アクセスアナライザー を使用して IAM ポリシーを検証し、安全で機能的な権限を確保する - IAM アクセスアナライザー は、新規および既存のポリシーを検証して、ポリシーが IAM ポリシー言語 (JSON) および IAM のベストプラクティスに準拠するようにします。IAM アクセスアナライザーは 100 を超えるポリシーチェックと実用的な推奨事項を提供し、安全で機能的なポリシーの作成をサポートします。詳細については、IAM ユーザーガイドIAM Access Analyzer でポリシーを検証する を参照してください。

  • 多要素認証 (MFA) を要求する – で IAM ユーザーまたはルートユーザーを必要とするシナリオがある場合は AWS アカウント、MFA をオンにしてセキュリティを強化します。API オペレーションが呼び出されるときに MFA を必須にするには、ポリシーに MFA 条件を追加します。詳細については、IAM ユーザーガイドMFA を使用した安全な API アクセス を参照してください。

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

Timestream for LiveAnalytics コンソールの使用

Timestream for LiveAnalytics には、Amazon Timestream for LiveAnalytics コンソールにアクセスするための特定の権限は必要ありません。 AWS アカウントの Timestream for LiveAnalytics リソースの詳細を一覧表示および表示するには、少なくとも読み取り専用のアクセス許可が必要です。最小限必要な許可よりも厳しく制限されたアイデンティティベースポリシーを作成すると、そのポリシーを添付したエンティティ (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": "*" } ] }

Timestream for LiveAnalytics の一般的なオペレーション

以下は、Timestream for LiveAnalytics サービスの一般的なオペレーションを許可する IAM ポリシーの例です。

すべてのオペレーションを許可する

以下は、Timestream for LiveAnalytics のすべてのオペレーションを許可するサンプルポリシーです。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:*" ], "Resource": "*" } ] }

SELECT オペレーションの許可

次のサンプルポリシーは、特定のリソースに対して SELECT スタイルのクエリを許可します。

注記

<account_ID> は自分の Amazon アカウント ID に置き換えます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:Select", "timestream:DescribeTable", "timestream:ListMeasures" ], "Resource": "arn:aws:timestream:us-east-1:111122223333:database/sampleDB/table/DevOps" }, { "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints", "timestream:SelectValues", "timestream:CancelQuery" ], "Resource": "*" } ] }

複数のリソースに対する SELECT オペレーションの許可

次のサンプルポリシーは、複数のリソースに対して SELECT スタイルのクエリを許可します。

注記

<account_ID> は自分の Amazon アカウント ID に置き換えます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:Select", "timestream:DescribeTable", "timestream:ListMeasures" ], "Resource": [ "arn:aws:timestream:us-east-1:111122223333:database/sampleDB/table/DevOps", "arn:aws:timestream:us-east-1:111122223333:database/sampleDB/table/DevOps1", "arn:aws:timestream:us-east-1:111122223333:database/sampleDB/table/DevOps2" ] }, { "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints", "timestream:SelectValues", "timestream:CancelQuery" ], "Resource": "*" } ] }

メタデータオペレーションの許可

次のサンプルポリシーは、メタデータクエリの実行をユーザーに許可しますが、Timestream for LiveAnalytics で実際のデータを読み書きするオペレーションの実行は許可しません。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints", "timestream:DescribeTable", "timestream:ListMeasures", "timestream:SelectValues", "timestream:ListTables", "timestream:ListDatabases", "timestream:CancelQuery" ], "Resource": "*" } ] }

INSERT オペレーションの許可

次のサンプルポリシーは、アカウント <account_id>database/sampleDB/table/DevOpsINSERT オペレーションを実行することをユーザーに許可します。

注記

<account_ID> は自分の Amazon アカウント ID に置き換えます。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "timestream:WriteRecords" ], "Resource": [ "arn:aws:timestream:us-east-1:111122223333:database/sampleDB/table/DevOps" ], "Effect": "Allow" }, { "Action": [ "timestream:DescribeEndpoints" ], "Resource": "*", "Effect": "Allow" } ] }

CRUD オペレーションの許可

次のサンプルポリシーは、ユーザーに Timestream for LiveAnalytics での CRUD オペレーション実行を許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints", "timestream:CreateTable", "timestream:DescribeTable", "timestream:CreateDatabase", "timestream:DescribeDatabase", "timestream:ListTables", "timestream:ListDatabases", "timestream:DeleteTable", "timestream:DeleteDatabase", "timestream:UpdateTable", "timestream:UpdateDatabase" ], "Resource": "*" } ] }

クエリをキャンセルし、リソースを指定せずにデータを選択する

次のサンプルポリシーは、ユーザーがクエリをキャンセルし、リソース仕様を必要としないデータに対して Select クエリを実行することを許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:SelectValues", "timestream:CancelQuery" ], "Resource": "*" } ] }

データベースの作成、記述、削除、更新

次のサンプルポリシーは、ユーザーに sampleDB データベースの作成、記述、削除を許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:CreateDatabase", "timestream:DescribeDatabase", "timestream:DeleteDatabase", "timestream:UpdateDatabase" ], "Resource": "arn:aws:timestream:us-east-1:111122223333:database/sampleDB" } ] }

リストされたデータベースをタグ {"Owner": "${username}"} で制限する

次のサンプルポリシーは、ユーザーにキーと値のペア {"Owner": "${username}"} でタグ付けされたすべてのデータベースの一覧表示を許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:ListDatabases" ], "Resource": "arn:aws:timestream:us-east-1:111122223333:database/*", "Condition": { "StringEquals": { "aws:ResourceTag/Owner": "${aws:username}" } } } ] }

データベース内のテーブルの一覧表示

次のサンプルポリシーは、データベース sampleDB 内のすべてのテーブルを一覧表示します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:ListTables" ], "Resource": "arn:aws:timestream:us-east-1:111122223333:database/sampleDB/" } ] }

テーブルでの作成、記述、削除、更新、選択

次のサンプルポリシーは、データベース sampleDB 内でのテーブルの作成、テーブルの記述、テーブルの削除、テーブルの更新、テーブル DevOps に対する Select クエリの実行をユーザーに許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:CreateTable", "timestream:DescribeTable", "timestream:DeleteTable", "timestream:UpdateTable", "timestream:Select" ], "Resource": "arn:aws:timestream:us-east-1:111122223333:database/sampleDB/table/DevOps" } ] }

テーブルによるクエリの制限

次のサンプルポリシーは、ユーザーにデータベース sampleDBDevOps を除くすべてのテーブルのクエリ実行を許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:Select" ], "Resource": "arn:aws:timestream:us-east-1:111122223333:database/sampleDB/table/*" }, { "Effect": "Deny", "Action": [ "timestream:Select" ], "Resource": "arn:aws:timestream:us-east-1:111122223333:database/sampleDB/table/DevOps" } ] }

タグに基づく Timestream for LiveAnalytics リソースへのアクセス

アイデンティティベースのポリシーの条件を使用して、タグに基づいて Timestream for LiveAnalytics リソースへのアクセスを管理できます。このセクションでは、いくつかの例を紹介します。

次の例で、テーブルの Owner にユーザーのユーザー名の値が含まれている場合に、そのテーブルを表示するためのアクセス許可をユーザーに付与するポリシーを作成する方法について説明します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "ReadOnlyAccessTaggedTables", "Effect": "Allow", "Action": "timestream:Select", "Resource": "arn:aws:timestream:us-east-2:111122223333:database/mydatabase/table/*", "Condition": { "StringEquals": { "aws:ResourceTag/Owner": "${aws:username}" } } } ] }

このポリシーはアカウントの IAM ユーザーにアタッチできます。richard-roe という名前のユーザーが Timestream for LiveAnalytics テーブルを表示しようとする場合、そのテーブルには Owner=richard-roe または owner=richard-roe とタグ付けされている必要があります。それ以外の場合、アクセスは拒否されます。条件キー名では大文字と小文字は区別されないため、条件タグキー OwnerOwnerowner に一致します。詳細については、「IAM ユーザーガイド」の「IAM JSON ポリシー要素:条件」を参照してください。

次のポリシーは、リクエストで渡されたタグにキー Owner と値 username がある場合に、ユーザーにそのタグを使用してテーブルを作成する権限を付与します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "CreateTagTableUser", "Effect": "Allow", "Action": [ "timestream:CreateTable", "timestream:TagResource" ], "Resource": "arn:aws:timestream:us-east-2:111122223333:database/mydatabase/table/*", "Condition": { "ForAnyValue:StringEquals": { "aws:RequestTag/Owner": "${aws:username}" } } } ] }

以下のポリシーは、dev または test のいずれかに設定した env タグを持つデータベースでの DescribeDatabase API の使用を許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowDescribe", "Effect": "Allow", "Action": [ "timestream:DescribeEndpoints", "timestream:DescribeDatabase" ], "Resource": "*" }, { "Sid": "AllowTagAccessForDevResources", "Effect": "Allow", "Action": [ "timestream:TagResource" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/env": [ "test", "dev" ] } } } ] }

このポリシーでは、Condition キーを使って、キー env と値 testqadev のいずれかを持つタグをリソースに追加できます。

スケジュールされたクエリ

ScheduledQuery の一覧表示、削除、更新、実行

次のサンプルポリシーは、ユーザーにスケジュールされたクエリの一覧表示、削除、更新、実行を許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "timestream:DeleteScheduledQuery", "timestream:ExecuteScheduledQuery", "timestream:UpdateScheduledQuery", "timestream:ListScheduledQueries", "timestream:DescribeEndpoints" ], "Resource": "*" } ] }

カスタマーマネージド KMS キーを使用した CreateScheduledQuery

次のサンプルポリシーは、カスタマーマネージド KMS キー <keyid for ScheduledQuery> を使用して暗号化されたスケジュールされたクエリをユーザーが作成することを許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::123456789012:role/ScheduledQueryExecutionRole" ], "Effect": "Allow" }, { "Action": [ "timestream:CreateScheduledQuery", "timestream:DescribeEndpoints" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/<keyid for ScheduledQuery>", "Effect": "Allow" } ] }

カスタマーマネージド KMS キーを使用した DescribeScheduledQuery

次のサンプルポリシーは、カスタマーマネージド KMS キー <keyid for ScheduledQuery> を使用して作成されたスケジュールされたクエリをユーザーが記述することを許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "timestream:DescribeScheduledQuery", "timestream:DescribeEndpoints" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "kms:Decrypt" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/<keyid for ScheduledQuery>", "Effect": "Allow" } ] }

実行ロールの権限 (スケジュールされたクエリにはカスタマーマネージド KMS キーを使用し、エラーレポートには SSE-KMS を使用)

次のサンプルポリシーを、エラーレポートのスケジュールされたクエリの暗号化と SSE-KMS 暗号化にカスタマーマネージド KMS キーを使用する CreateScheduledQuery API の ScheduledQueryExecutionRoleArn パラメータで指定された IAM ロールにアタッチします。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Action": [ "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-west-2:123456789012:key/<keyid for ScheduledQuery>", "Effect": "Allow" }, { "Action": [ "kms:Decrypt" ], "Resource": [ "arn:aws:kms:us-west-2:123456789012:key/<keyid for database-1>", "arn:aws:kms:us-west-2:123456789012:key/<keyid for database-n>", "arn:aws:kms:us-west-2:123456789012:key/<keyid for ScheduledQuery>" ], "Effect": "Allow" }, { "Action": [ "sns:Publish" ], "Resource": [ "arn:aws:sns:us-west-2:123456789012:scheduled-query-notification-topic-*" ], "Effect": "Allow" }, { "Action": [ "timestream:Select", "timestream:SelectValues", "timestream:WriteRecords" ], "Resource": "*", "Effect": "Allow" }, { "Action": [ "s3:PutObject", "s3:GetBucketAcl" ], "Resource": [ "arn:aws:s3:::scheduled-query-error-bucket", "arn:aws:s3:::scheduled-query-error-bucket/*" ], "Effect": "Allow" } ] }

実行ロールの信頼関係

以下は、CreateScheduledQuery API の ScheduledQueryExecutionRoleArn パラメータで指定された IAM ロールの信頼関係です。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "timestream.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

アカウント内で作成されたすべてのスケジュールされたクエリへのアクセスを許可する

次のサンプルポリシーを CreateScheduledQuery API の ScheduledQueryExecutionRoleArn パラメータで指定された IAM ロールにアタッチして、アカウント Account_ID 内で作成されたすべてのスケジュールされたクエリへのアクセスを許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "timestream.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "Account_ID" }, "ArnLike": { "aws:SourceArn": "arn:aws:timestream:us-west-2:111122223333:scheduled-query/*" } } } ] }

特定の名前でスケジュールされたすべてのクエリへのアクセスを許可する

次のサンプルポリシーを CreateScheduledQuery API の ScheduledQueryExecutionRoleArn パラメータで指定された IAM ロールにアタッチして、アカウント Account_ID 内で Scheduled_Query_Name で始まる名前でスケジュールされたすべてのクエリへのアクセスを許可します。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "timestream.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "Account_ID" }, "ArnLike": { "aws:SourceArn": "arn:aws:timestream:us-west-2:111122223333:scheduled-query/Scheduled_Query_Name*" } } } ] }