View a markdown version of this page

配置 AWS Glue Data Quality的 IAM 权限 - AWS Glue

配置 AWS Glue Data Quality的 IAM 权限

本主题提供的信息可帮助您了解 IAM 管理员了解可以在 AWS Glue Data Quality 的 AWS Identity and Access Management(IAM)policy中使用的操作和资源。它还包括 IAM policy 示例,其中包含在 AWS Glue Data Catalog 中使用 AWS Glue 数据质量所需的最低权限。

有关 AWS Glue 的其他安全信息,请参阅 AWS Glue 中的安全性。

AWS Glue 数据质量的 IAM 权限

下表列出了用户执行特定 AWS Glue Data Quality 操作所需的权限。要为 AWS Glue Data Quality 设置精细授权,您可以在 IAM policy 语句的 Action 元素中指定这些操作。

AWS Glue Data Quality 操作
处理建议 说明 资源类型
glue:CreateDataQualityRuleset 授予权限以创建数据质量规则集。 ::dataQualityRuleset/<name>
glue:DeleteDataQualityRuleset 授予权限以删除数据质量规则集。 ::dataQualityRuleset/<name>
glue:GetDataQualityRuleset 授予权限以检索数据质量规则集。 ::dataQualityRuleset/<name>
glue:ListDataQualityRulesets 授予权限以检索所有数据质量规则集。 ::dataQualityRuleset/*
glue:UpdateDataQualityRuleset 授予权限以更新数据质量规则集。 ::dataQualityRuleset/<name>
glue:GetDataQualityResult 授予权限以检索数据质量任务运行结果。此 IAM 操作提供了以下 API 的权限:
  • BatchGetDataQualityQualityResult

  • ListDataQualityStatistics

  • ListDataQualityStatisticAnnotations

::dataQualityRuleset/<name>
glue:ListDataQualityResults 授予权限以检索所有数据质量任务运行结果。 ::dataQualityRuleset/*
glue:CancelDataQualityRuleRecommendationRun 授予权限以停止正在运行的数据质量建议任务运行。 ::dataQualityRuleset/*
glue:GetDataQualityRuleRecommendationRun 授予权限以检索数据质量建议任务运行。 ::dataQualityRuleset/*
glue:ListDataQualityRuleRecommendationRuns 授予权限以检索所有数据质量建议任务运行。 ::dataQualityRuleset/*
glue:StartDataQualityRuleRecommendationRun 授予权限以开始数据质量规则建议任务运行。 ::dataQualityRuleset/*
glue:CancelDataQualityRulesetEvaluationRun 授予权限以停止正在运行的数据质量任务运行。 ::dataQualityRuleset/*
glue:GetDataQualityRulesetEvaluationRun 授予权限以检索数据质量任务运行结果。 ::dataQualityRuleset/*
glue:ListDataQualityRulesetEvaluationRuns 授予权限以检索所有数据质量任务运行。 ::dataQualityRuleset/*
glue:StartDataQualityRulesetEvaluationRun 授予权限以开始数据质量规则任务运行。 ::dataQualityRuleset/<name>
glue:PublishDataQuality 授予发布数据质量结果的权限。 ::dataQualityRuleset/<name>
glue:GetDataQualityModel 授予检索数据质量模型的权限。 ::dataQualityRuleset/<name>, ::job/<name>
glue:GetDataQualityModelResult 授予检索数据质量模型结果的权限。 ::dataQualityRuleset/<name>, ::job/<name>
glue:PutDataQualityStatisticAnnotation 授予为统计数据添加注释的权限。此 IAM 操作提供了以下 API 的权限:
  • BatchPutDataQualityStatisticAnnotation

::dataQualityRuleset/<name>, ::job/<name>
glue:PutDataQualityProfileAnnotation 授予在配置文件中为所有统计数据添加注释的权限。 ::dataQualityRuleset/<name>, ::job/<name>

计划评估运行需要 IAM 设置

IAM 权限

要运行计划的数据质量评估运行,必须将 IAM:PassRole 操作添加到权限策略中。

AWS EventBridge 调度器所需的权限
处理建议 说明 资源类型
iam:PassRole 向 IAM 授予权限,允许用户传递已批准的角色。 用于调用 StartDataQualityRulesetEvaluationRun 的角色的 ARN

如果没有这些权限,则会发生以下错误:

"errorCode": "AccessDenied" "errorMessage": "User: arn:aws:sts::account_id:assumed-role/AWSGlueServiceRole is not authorized to perform: iam:PassRole on resource: arn:aws:iam::account_id:role/service-role/AWSGlueServiceRole because no identity-based policy allows the iam:PassRole action"

IAM 可信实体

AWS Glue and AWS EventBridge 调度器服务需要在可信实体中列出,才能创建和运行计划的 StartDataQualityEvaluationRun。

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

示例 IAM policies

AWS Glue 数据质量的 IAM 角色需要以下类型的权限:

  • AWS Glue Data Quality 操作权限,以便您获得推荐的数据质量规则,并针对 AWS Glue Data Catalog 中的表运行数据质量任务。本节中的 IAM policy 示例包括 AWS Glue 数据质量操作所需的最低权限。

  • 授予访问 Data Catalog 表和基础数据的权限。这些权限因使用案例而异。例如,对于在 Amazon S3 中编录的数据,权限应包括对 Amazon S3 的访问。

    注意

    除了本节中描述的权限之外,还必须配置 Amazon S3 权限。

获取推荐数据质量规则的最低权限

此示例策略包括生成推荐的数据质量规则所需的权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowGlueRuleRecommendationRunActions", "Effect": "Allow", "Action": [ "glue:GetDataQualityRuleRecommendationRun", "glue:PublishDataQuality", "glue:CreateDataQualityRuleset" ], "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*" }, { "Sid": "AllowCatalogPermissions", "Effect": "Allow", "Action": [ "glue:GetPartitions", "glue:GetTable" ], "Resource": [ "*" ] }, { "Sid": "AllowS3GetObjectToRunRuleRecommendationTask", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::aws-glue-*" }, { "Sid": "AllowPublishingCloudwatchLogs", "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": "*" } ] }

获取高级数据质量规则建议所需的最低权限

您的建议角色必须具有 iam:PassRole 权限。该角色不需要 Amazon Bedrock 权限。

信任策略

使用此信任策略,允许 AWS Glue 为您的源表担任建议角色。

将 aws:SourceArn 设置为完整的源表 ARN。将该 ARN 中的账户 ID 用于 aws:SourceAccount。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "glue.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnEquals": { "aws:SourceArn": "arn:aws:glue:us-east-1:111122223333:table/database-name/table-name" } } } ] }

权限策略

在首次 ADVANCED 运行期间,AWS Glue 会在您的账户中创建以下资源:

  • 用于运行规则建议查询的 glue-dataquality-sampling Athena 工作组。

  • 用于存储查询结果的 aws-glue-dataquality-sampling-account-id-region Amazon S3 存储桶。

在后续运行中,AWS Glue 会重复使用现有的工作组和存储桶。有关更多信息,请参阅 高级数据质量规则建议的数据保护。

将以下权限策略附加到您的建议角色。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCatalogRead", "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetPartitions", "glue:GetTable" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:catalog", "arn:aws:glue:us-east-1:111122223333:database/database-name", "arn:aws:glue:us-east-1:111122223333:table/database-name/table-name" ] }, { "Sid": "AllowDataQualityRecommendationResults", "Effect": "Allow", "Action": "glue:PublishDataQuality", "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*" }, { "Sid": "AllowDataAccess", "Effect": "Allow", "Action": [ "athena:CreateWorkGroup", "athena:GetQueryExecution", "athena:GetQueryResults", "athena:StartQueryExecution" ], "Resource": "arn:aws:athena:us-east-1:111122223333:workgroup/glue-dataquality-sampling" }, { "Sid": "AllowSourceRead", "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::source-bucket", "arn:aws:s3:::source-bucket/*" ] }, { "Sid": "AllowSamplingBucket", "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:CreateBucket", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:PutLifecycleConfiguration", "s3:PutObject" ], "Resource": [ "arn:aws:s3:::aws-glue-dataquality-sampling-111122223333-us-east-1", "arn:aws:s3:::aws-glue-dataquality-sampling-111122223333-us-east-1/athena-results/*" ] } ] }
注意

如果存储桶已存在,则可以从该策略中删除 s3:CreateBucket。如果您删除该存储桶,AWS Glue 将再次需要此权限。此策略中的其他所有权限在后续运行中仍然是必需的。

其他权限

如果以下列表中的某项条件适用,请将相关权限添加到您的建议角色中。

  • 如果 Lake Formation 控制表访问权限,请添加 lakeformation:GetDataAccess。向该角色授予数据库上的 DESCRIBE,以及表上的 DESCRIBE 和 SELECT 权限。

  • 如果您指定了数据质量安全配置,请添加 glue:GetSecurityConfiguration 权限。

  • 如果您指定了 CreatedRulesetName,请添加 glue:CreateDataQualityRuleset 权限。

  • 如果您为数据质量安全配置指定了客户托管密钥,请为该密钥添加以下语句。

    { "Sid": "AllowDataQualityEncryption", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncrypt*" ], "Resource": "arn:aws:kms:us-east-1:111122223333:key/key-id" }

    您的建议角色需要具备以下操作权限,用于查询结果加密和 AWS Glue Data Quality 资产加密。密钥策略还必须允许您的角色执行这些操作。有关更多信息,请参阅 密钥策略。

  • 如果源对象使用 SSE-KMS,请添加以下语句。

    { "Sid": "AllowSourceDataDecryption", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-1:111122223333:key/source-key-id" }

    源密钥策略还必须允许建议角色解密源对象。

运行数据质量任务所需的最低权限。

此示例策略包括运行数据质量评估任务所需的权限。

根据使用案例可选择以下策略声明:

  • AllowCloudWatchPutMetricDataToPublishTaskMetrics:如果要将数据质量运行指标发布到 ,必须选择此项。Amazon CloudWatch

  • AllowS3PutObjectToWriteTaskResults:如果要将数据质量运行结果写入 Amazon S3,必须选择此项。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowGlueGetDataQualityRuleset", "Effect": "Allow", "Action": [ "glue:GetDataQualityRuleset" ], "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/YOUR-RULESET-NAME" }, { "Sid": "AllowGlueRulesetEvaluationRunActions", "Effect": "Allow", "Action": [ "glue:GetDataQualityRulesetEvaluationRun", "glue:PublishDataQuality" ], "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*" }, { "Sid": "AllowCatalogPermissions", "Effect": "Allow", "Action": [ "glue:GetPartitions", "glue:GetTable" ], "Resource": [ "*" ] }, { "Sid": "AllowS3GetObjectForRulesetEvaluationRun", "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::aws-glue-*" }, { "Sid": "AllowCloudWatchPutMetricDataToPublishTaskMetrics", "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": "Glue Data Quality" } } }, { "Sid": "AllowS3PutObjectToWriteTaskResults", "Effect": "Allow", "Action": [ "s3:PutObject*" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*" } ] }

运行数据质量 ETL 作业所需的最低权限

此示例策略包括运行数据质量 ETL 作业所需的权限。

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowGluePublishDataQualityResult", "Effect": "Allow", "Action": [ "glue:PublishDataQuality" ], "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*" }, { "Sid": "AllowGlueGetDataQualityResult", "Effect": "Allow", "Action": [ "glue:GetDataQualityResult" ], "Resource": "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*" }, { "Sid": "AllowGlueDataQualityStatisticAnnotation", "Effect": "Allow", "Action": [ "glue:PutDataQualityStatisticAnnotation" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*", "arn:aws:glue:us-east-1:111122223333::job/{JobName}" ] }, { "Sid": "AllowGlueDataQualityProfileAnnotation", "Effect": "Allow", "Action": [ "glue:PutDataQualityProfileAnnotation" ], "Resource": [ "arn:aws:glue:us-east-1:111122223333:dataQualityRuleset/*", "arn:aws:glue:us-east-1:111122223333::job/{JobName}" ] } ] }