リソース管理のためのサービスにリンクされたロールのアクセス許可 - Amazon Security Lake

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

リソース管理のためのサービスにリンクされたロールのアクセス許可

Security Lake は、 という名前のサービスにリンクされたロールAWSServiceRoleForSecurityLakeResourceManagementを使用して、継続的なモニタリングとパフォーマンスの向上を実行するため、レイテンシーとコストを削減できます。このサービスリンクロールは、ロールを引き受ける上で resource-management.securitylake.amazonaws.com サービスを信頼します。またAWSServiceRoleForSecurityLakeResourceManagement、 を有効にすると、Lake Formation へのアクセスが許可され、セキュリティを強化するために、すべてのリージョンで Security Lake が管理する S3 バケットを Lake Formation に自動的に登録します。

ロールのアクセス許可ポリシーは、 という名前の AWS 管理ポリシーでありSecurityLakeResourceManagementServiceRolePolicy、データレイク内のメタデータの管理など、Security Lake によって作成されたリソースを管理するためのアクセスを許可します。Amazon Security Lake AWS の管理ポリシーの詳細については、AWS 「Amazon Security Lake の管理ポリシー」を参照してください。

このサービスにリンクされたロールにより、Security Lake は、Security Lake によってアカウントにデプロイされたリソース (S3 バケット、 AWS Glue テーブル、Amazon SQS キュー、Metastore Manager (MSM) Lambda 関数、および EventBridge ルール) のヘルスをモニタリングできます。Security Lake がこのサービスにリンクされたロールで実行できるオペレーションの例を次に示します。

  • Apache Iceberg マニフェストファイルの圧縮により、クエリのパフォーマンスが向上し、Lambda MSMの処理時間とコストが削減されます。

  • Amazon の状態をモニタリングSQSして、取り込みの問題を検出します。

  • メタデータファイルを除外するために、クロスリージョンデータレプリケーションを最適化します。

注記

AWSServiceRoleForSecurityLakeResourceManagement サービスにリンクされたロールをインストールしない場合、Security Lake は引き続き機能しますが、Security Lake がアカウント内のリソースをモニタリングおよび最適化できるように、このサービスにリンクされたロールを受け入れることを強くお勧めします。

アクセス許可の詳細

そのロールは、次のアクセス許可ポリシーで設定する必要があります。

  • events – プリンシパルがログソースとログサブスクライバーに必要な EventBridge ルールを管理できるようにします。

  • lambda – AWS ソース配信とクロスリージョンレプリケーション後に AWS Glue テーブルパーティションを更新するために使用される Lambda の管理をプリンシパルに許可します。

  • glue – プリンシパルが AWS Glue Data Catalog テーブルに対して特定の書き込みアクションを実行できるようにします。これにより、 AWS Glue クローラはデータ内のパーティションを識別でき、Security Lake は Apache Iceberg テーブルの Apache Iceberg メタデータを管理できます。

  • s3 – プリンシパルが、ログデータと Glue テーブルメタデータを含む Security Lake バケットに対して特定の読み取りおよび書き込みアクションを実行できるようにします。

  • logs – プリンシパルが Lambda 関数の出力を CloudWatch ログに記録するための読み取りアクセスを許可します。

  • sqs – プリンシパルが、データレイクでオブジェクトが追加または更新されたときにイベント通知を受け取る Amazon SQSキューに対して特定の読み取りおよび書き込みアクションを実行できるようにします。

  • lakeformation – プリンシパルが Lake Formation の設定を読み取って、設定ミスをモニタリングできるようにします。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ReadEventBridgeRules", "Effect": "Allow", "Action": [ "events:ListRules" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "ManageSecurityLakeEventRules", "Effect": "Allow", "Action": [ "events:PutRule" ], "Resource": "arn:aws:events:*:*:rule/AmazonSecurityLake-*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "ManageSecurityLakeLambdaConfigurations", "Effect": "Allow", "Action": [ "lambda:GetEventSourceMapping", "lambda:GetFunction", "lambda:PutFunctionConcurrency", "lambda:GetProvisionedConcurrencyConfig", "lambda:GetFunctionConcurrency", "lambda:GetRuntimeManagementConfig", "lambda:PutProvisionedConcurrencyConfig", "lambda:PublishVersion", "lambda:DeleteFunctionConcurrency", "lambda:DeleteEventSourceMapping", "lambda:GetAlias", "lambda:GetPolicy", "lambda:GetFunctionConfiguration", "lambda:UpdateFunctionConfiguration" ], "Resource": [ "arn:aws:lambda:*:*:function:SecurityLake_Glue_Partition_Updater_Lambda*", "arn:aws:lambda:*:*:function:AmazonSecurityLakeMetastoreManager-*-*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "AllowListLambdaEventSourceMappings", "Effect": "Allow", "Action": [ "lambda:ListEventSourceMappings" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "AllowUpdateLambdaEventSourceMapping", "Effect": "Allow", "Action": [ "lambda:UpdateEventSourceMapping" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" }, "StringLike": { "lambda:FunctionArn": "arn:aws:lambda:*:*:function:AmazonSecurityLakeMetastoreManager-*-*" } } }, { "Sid": "AllowUpdateLambdaConfigs", "Effect": "Allow", "Action": [ "lambda:UpdateFunctionConfiguration" ], "Resource": "arn:aws:lambda:*:*:function:AmazonSecurityLakeMetastoreManager-*-*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "ManageSecurityLakeGlueResources", "Effect": "Allow", "Action": [ "glue:CreatePartition", "glue:BatchCreatePartition", "glue:GetTable", "glue:GetTables", "glue:UpdateTable", "glue:GetDatabase" ], "Resource": [ "arn:aws:glue:*:*:table/amazon_security_lake_glue_db*/*", "arn:aws:glue:*:*:database/amazon_security_lake_glue_db*", "arn:aws:glue:*:*:catalog" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "AllowDataLakeConfigurationManagement", "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:PutObject", "s3:GetObjectAttributes", "s3:GetBucketNotification", "s3:PutBucketNotification", "s3:GetLifecycleConfiguration", "s3:PutLifecycleConfiguration", "s3:GetEncryptionConfiguration", "s3:GetReplicationConfiguration" ], "Resource": [ "arn:aws:s3:::aws-security-data-lake*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "AllowMetaDataCompactionAndManagement", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:DeleteObject", "s3:RestoreObject" ], "Resource": [ "arn:aws:s3:::aws-security-data-lake*/metadata/*.avro", "arn:aws:s3:::aws-security-data-lake*/metadata/*.metadata.json" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "ReadSecurityLakeLambdaLogs", "Effect": "Allow", "Action": [ "logs:DescribeLogStreams", "logs:StartQuery", "logs:GetLogEvents", "logs:GetQueryResults", "logs:GetLogRecord" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/lambda/AmazonSecurityLakeMetastoreManager-*-*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "ManageSecurityLakeSQSQueue", "Effect": "Allow", "Action": [ "sqs:StartMessageMoveTask", "sqs:DeleteMessage", "sqs:GetQueueUrl", "sqs:ListDeadLetterSourceQueues", "sqs:ChangeMessageVisibility", "sqs:ListMessageMoveTasks", "sqs:ReceiveMessage", "sqs:SendMessage", "sqs:GetQueueAttributes", "sqs:SetQueueAttributes" ], "Resource": [ "arn:aws:sqs:*:*:SecurityLake_*", "arn:aws:sqs:*:*:AmazonSecurityLakeManager-*" ], "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } }, { "Sid": "AllowDataLakeManagement", "Effect": "Allow", "Action": [ "lakeformation:GetDataLakeSettings", "lakeformation:ListPermissions" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceAccount": "${aws:PrincipalAccount}" } } } ] }

IAM エンティティ (ユーザー、グループ、ロールなど) がサービスにリンクされたロールを作成、編集、削除できるようにするには、アクセス権限を設定する必要があります。詳細については、「 IAMユーザーガイド」の「サービスにリンクされたロールのアクセス許可」を参照してください。

Security Lake のサービスリンクロールの作成

Security Lake AWSServiceRoleForSecurityLakeResourceManagementのサービスにリンクされたロールは、Security Lake コンソールまたは を使用して作成できます AWS CLI。

サービスにリンクされたロールを作成するには、IAMユーザーまたはIAMロールに次のアクセス許可を付与する必要があります。IAM ロールは、Security Lake が有効なすべてのリージョンで Lake Formation 管理者である必要があります。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLakeFormationActionsViaSecurityLakeConsole", "Effect": "Allow", "Action": [ "lakeformation:GrantPermissions", "lakeformation:ListPermissions", "lakeformation:ListResources", "lakeformation:RegisterResource", "lakeformation:RevokePermissions" ], "Resource": "*" }, { "Sid": "AllowIamActionsViaSecurityLakeConsole", "Effect": "Allow", "Action": [ "iam:CreateServiceLinkedRole", "iam:GetPolicyVersion", "iam:GetRole", "iam:PutRolePolicy" ], "Resource": [ "arn:*:iam::*:role/aws-service-role/resource-management.securitylake.amazonaws.com/AWSServiceRoleForSecurityLakeResourceManagement", "arn:*:iam::*:role/*AWSServiceRoleForLakeFormationDataAccess", "arn:*:iam::aws:policy/service-role/AWSGlueServiceRole", "arn:*:iam::aws:policy/service-role/AmazonSecurityLakeMetastoreManager", "arn:*:iam::aws:policy/aws-service-role/SecurityLakeResourceManagementServiceRolePolicy" ], "Condition": { "StringLikeIfExists": { "iam:AWSServiceName": [ "securitylake.amazonaws.com", "resource-management.securitylake.amazonaws.com", "lakeformation.amazonaws.com" ] } } }, { "Sid": "AllowGlueActionsViaConsole", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetTables" ], "Resource": [ "arn:*:glue:*:*:catalog", "arn:*:glue:*:*:database/amazon_security_lake_glue_db*", "arn:*:glue:*:*:table/amazon_security_lake_glue_db*/*" ] } ] }
Console
  1. で Security Lake コンソールを開きますhttps://console.aws.amazon.com/securitylake/

  2. 概要ページの情報バーでサービスにリンクされたロールを有効にするをクリックして、新しいサービスにリンクされたロールを受け入れます。

サービスにリンクされたロールを有効にすると、Security Lake を将来使用するためにこのプロセスを繰り返す必要はありません。

CLI

AWSServiceRoleForSecurityLakeResourceManagement サービスにリンクされたロールをプログラムで作成するには、次のCLIコマンドを使用します。

$ aws iam create-service-linked-role --aws-service-name resource-management.securitylake.amazonaws.com

を使用してAWSServiceRoleForSecurityLakeResourceManagementサービスにリンクされたロールを作成する場合は AWS CLI、Security Lake Glue データベース上のすべてのテーブルに Lake Formation テーブルレベルのアクセス許可 (ALTER、DESCRIBE) を付与して、テーブルメタデータを管理し、データにアクセスする必要があります。いずれかのリージョンの Glue テーブルが以前の Security Lake 有効化から S3 バケットを参照する場合は、サービスにリンクされたロールへの DATA_LOCATION_ACCESS アクセス許可を一時的に許可して、Security Lake がこの状況を修復できるようにする必要があります。

また、Lake Formation のアクセス許可をアカウントのAWSServiceRoleForSecurityLakeResourceManagementサービスにリンクされたロールに付与する必要があります。

次の例は、指定されたリージョンのサービスにリンクされたロールに Lake Formation 許可を付与する方法を示しています。この例は Linux、macOS、または Unix 用にフォーマットされており、読みやすさを向上させるためにバックスラッシュ (\) の行継続文字を使用しています。

$ aws lakeformation grant-permissions --region {region} --principal DataLakePrincipalIdentifier={AWSServiceRoleForSecurityLakeResourceManagement ARN} \ --permissions ALTER DESCRIBE --resource '{ "Table": { "DatabaseName": "amazon_security_lake_glue_db_{region}", "TableWildcard": {} } }'

次の例は、ロールがどのようにARN表示されるかを示しています。リージョンARNに合わせてロールを編集する必要があります。

"AWS": "arn:[partition]:iam::[accountid]:role/aws-service-role/resource-management.securitylake.amazonaws.com/AWSServiceRoleForSecurityLakeResourceManagement"

CreateServiceLinkedRole API 呼び出しを使用することもできます。リクエストで、 を AWSServiceNameとして指定しますresource-management.securitylake.amazonaws.com

AWSServiceRoleForSecurityLakeResourceManagement ロールを有効にした後、暗号化に AWS KMS カスタマーマネージドキー (CMK) を使用している場合は、 CMKが存在するリージョンの S3 バケットに暗号化されたオブジェクトを AWS 書き込むことをサービスにリンクされたロールに許可する必要があります。 AWS KMS コンソールで、 CMKが存在する AWS リージョンの KMS キーに次のポリシーを追加します。KMS キーポリシーの変更方法の詳細については、「 AWS Key Management Service デベロッパーガイド」の「 のキーポリシー AWS KMS」を参照してください。

{ "Sid": "Allow SLR", "Effect": "Allow", "Principal": { "AWS": "arn:[partition]:iam::[accountid]:role/aws-service-role/resource-management.securitylake.amazonaws.com/AWSServiceRoleForSecurityLakeResourceManagement" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition": { "StringEquals": { "kms:EncryptionContext:aws:s3:arn": "arn:aws:s3:::[regional-datalake-s3-bucket-name]" }, "StringLike": { "kms:ViaService": "s3.[region].amazonaws.com" } } },

Security Lake 向けのサービスリンクロールの編集

Security Lake では、AWSServiceRoleForSecurityLakeResourceManagement サービスリンクロールの編集は許可されていません。サービスリンクロールを作成すると、多くのエンティティによってロールが参照される可能性があるため、ロール名を変更することはできません。ただし、IAM を使用したロールの説明の編集はできます。詳細については、「 IAMユーザーガイド」の「サービスにリンクされたロールの編集」を参照してください。

Security Lake 向けのサービスリンクロールの削除

サービスリンクロールを Security Lake から削除することはできません。代わりに、 IAMコンソール、、APIまたは からサービスにリンクされたロールを削除できます AWS CLI。詳細については、「 IAMユーザーガイド」の「サービスにリンクされたロールの削除」を参照してください。

サービスリンクロールを削除する前に、まずロールにアクティブなセッションがないことを確認し、AWSServiceRoleForSecurityLakeResourceManagement が使用しているリソースを削除する必要があります。

注記

リソースを削除しようとするときに Security Lake が AWSServiceRoleForSecurityLakeResourceManagement ロールを使用している場合、削除は失敗する可能性があります。失敗した場合は、数分待ってから操作を再試行してください。

AWSServiceRoleForSecurityLakeResourceManagementサービスリンクロールを削除したが、再作成する必要がある場合は、アカウントで Security Lake を有効にすることで、ロールを再作成することができます。Security Lake を再作成すると、Security Lake は、ユーザーのためにサービスリンクロールを再作成します。

Security Lake サービスにリンクされたロール AWS リージョン でサポート

Security Lake は、Security Lake AWS リージョン が利用可能なすべての で、AWSServiceRoleForSecurityLakeResourceManagementサービスにリンクされたロールの使用をサポートします。Security Lake が現在利用可能なリージョンのリストについては、「Security Lake リージョンとエンドポイント」を参照してください。