

# AWS Glue Data Quality の IAM アクセス許可の設定
<a name="data-quality-authorization"></a>

このトピックでは、IAM 管理者が AWS Glue Data Quality 向けの AWS Identity and Access Management (IAM) ポリシーで使用できるアクションとリソースの理解に役立つ情報を説明します。また、AWS Glue データカタログで AWS Glue Data Quality を使用するために必要な最小限の権限を含むサンプル IAM ポリシーも含まれています。

AWS Glue のセキュリティに関する追加情報については、「[「AWS Glue」 のセキュリティ](security.md)」を参照してください。

## AWS Glue Data Quality の IAM アクセス許可
<a name="data-quality-authorization-permissions"></a>

次の表は、AWS Glue Data Quality で特定のオペレーションを実行する際にユーザーに必要になるアクセス許可を一覧化したものです。AWS Glue Data Quality の権限を詳細に設定するときは、IAM ポリシーステートメントの `Action` 要素でこれらのアクションを指定します。


**AWS Glue Data Quality アクション**  

| アクション | 説明 | リソースタイプ | 
| --- | --- | --- | 
| glue:CreateDataQualityRuleset | 品質評価のルールセットを、1 つ作成するためのアクセス許可を付与します。 | ::dataQualityRuleset/<name> | 
| glue:DeleteDataQualityRuleset | 品質評価のルールセットを、1 つ削除するためのアクセス許可を付与します。 | ::dataQualityRuleset/<name> | 
| glue:GetDataQualityRuleset | 品質評価のルールセットを、1 つ取得するためのアクセス許可を付与します。 | ::dataQualityRuleset/<name> | 
| glue:ListDataQualityRulesets | 品質評価のルールセットを、すべて削除するためのアクセス許可を付与します。 | ::dataQualityRuleset/\* | 
| glue:UpdateDataQualityRuleset | 品質評価のルールセットを、1 つ更新するためのアクセス許可を付与します。 | ::dataQualityRuleset/<name> | 
| glue:GetDataQualityResult |  品質評価タスクの実行結果を、1 つ取得するためのアクセス許可を付与します。この IAM アクションは、次の APIS への許可も付与します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/data-quality-authorization.html)  | ::dataQualityRuleset/<name> | 
| glue:ListDataQualityResults | 品質評価タスクの実行結果を、すべて取得するためのアクセス許可を付与します。 | ::dataQualityRuleset/\* | 
| glue:CancelDataQualityRuleRecommendationRun | 実行中の品質評価推奨タスクを、1 つ停止するためのアクセス許可を付与します。 | ::dataQualityRuleset/\* | 
| glue:GetDataQualityRuleRecommendationRun | 実行済みの品質評価推奨タスクを、1 つ取得するためのアクセス許可を付与します。 | ::dataQualityRuleset/\* | 
| glue:ListDataQualityRuleRecommendationRuns | 実行中の品質評価推奨タスクを、すべて取得するためのアクセス許可を付与します。 | ::dataQualityRuleset/\* | 
| glue:StartDataQualityRuleRecommendationRun | 品質評価推奨タスクを、1 つ実行開始するためのアクセス許可を付与します。 | ::dataQualityRuleset/\* | 
| glue:CancelDataQualityRulesetEvaluationRun | 実行中の品質評価タスクを、1 つ停止するためのアクセス許可を付与します。 | ::dataQualityRuleset/\* | 
| glue:GetDataQualityRulesetEvaluationRun | 実行済みの品質評価タスクを、1 つ取得するためのアクセス許可を付与します。 | ::dataQualityRuleset/\* | 
| glue:ListDataQualityRulesetEvaluationRuns | 実行済みの品質評価タスクを、すべて取得するためのアクセス許可を付与します。 | ::dataQualityRuleset/\* | 
| glue:StartDataQualityRulesetEvaluationRun | 品質評価タスクを、1 つ実行開始するためのアクセス許可を付与します。 | ::dataQualityRuleset/<name> | 
| glue:PublishDataQuality | データ品質の結果を公開する許可を付与します。 | ::dataQualityRuleset/<name> | 
| glue:GetDataQualityModel | データ品質モデルを取得する許可を付与します。 | ::dataQualityRuleset/<name>, ::job/<name>  | 
| glue:GetDataQualityModelResult | データ品質モデルの結果を取得する許可を付与します。 | ::dataQualityRuleset/<name>, ::job/<name>  | 
| glue:PutDataQualityStatisticAnnotation |  統計に注釈を追加する許可を付与します。この IAM アクションは、次の APIS への許可も付与します。[See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/glue/latest/dg/data-quality-authorization.html)  | ::dataQualityRuleset/<name>, ::job/<name>  | 
| glue:PutDataQualityProfileAnnotation | プロファイルのすべての統計に注釈を付ける許可を付与します。 | ::dataQualityRuleset/<name>, ::job/<name>  | 

## 評価実行のスケジューリングに必要な IAM の設定
<a name="data-quality-iam-setup-evaluation-runs"></a>

### IAM アクセス許可
<a name="data-quality-iam-setup-evaluation-runs-permissions"></a>

スケジュール済みの Data Quality 評価実行を実行するには、権限ポリシーに `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 の信頼されたエンティティ
<a name="data-quality-iam-setup-evaluation-runs-trusted-entities"></a>

スケジュール済みの `StartDataQualityEvaluationRun` を作成して実行するには、AWS Glue と AWS EventBridge スケジューラサービスが、信頼されたエンティティに登録されている必要があります。

------
#### [ 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 ポリシーの例
<a name="data-quality-authorization-example-policy"></a>

AWS Glue Data Quality の IAM ロールには、次のタイプのアクセス許可が必要です。
+ AWS Glue Data Quality オペレーションのアクセス許可。これにより、推奨されるデータ品質ルールを取得したり、AWS Glue データカタログ内のテーブルに対してデータ品質タスクを実行したりできます。このセクションの IAM ポリシーの例には、AWS Glue Data Quality オペレーションに必要な最低限のアクセス許可が含まれています。
+ データカタログテーブルとその基盤となるデータへのアクセス許可。これらのアクセス許可は、ユースケースによって異なります。例えば、Amazon S3 でカタログ化するデータの場合、アクセス許可には Amazon S3 へのアクセスを含める必要があります。
**注記**  
そのため、このセクションで説明するアクセス許可に加えて、Amazon S3 のアクセス許可を設定する必要があります。

### 推奨データ品質ルールの取得に最低限必要なアクセス許可
<a name="example-policy-get-dq-rule-recommendations"></a>

このサンプルポリシーには、推奨データ品質ルールを生成するために必要なアクセス許可が含まれています。

------
#### [ 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": "*"
    }
  ]
}
```

------

### 品質評価タスクを実行するために最低限必要なアクセス許可
<a name="example-policy-run-dq-task"></a>

このサンプルポリシーには、データ品質評価タスクを実行するために必要なアクセス許可が含まれています。

以下のポリシーステートメントはオプションで、ユースケースに応じて設定します。
+ `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 ジョブを実行するために最低限必要なアクセス許可
<a name="example-policy-run-dq-etl-job"></a>

 このサンプルポリシーには、データ品質 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}"
      ]
    }
	]
}
```

------