

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

# で Amazon Redshift 名前空間を管理するための前提条件 AWS Glue Data Catalog
<a name="redshift-ns-prereqs"></a>

1. データレイク管理者の作成 - 名前空間の招待を受け入れる権限を持つ IAM ロールを作成し、 AWS Glue Data Catalog オブジェクト (カタログ、データベース、テーブル/ビュー) を作成し、他のユーザーに Lake Formation アクセス許可を付与します。

   データレイク管理者を作成するための詳しい手順については、「[データレイク管理者を作成する](initial-lf-config.md#create-data-lake-admin)」を参照してください。

1. データレイク管理者アクセス許可を更新します。

    データレイク管理者のアクセス許可に加えて、データレイク管理者は、Lake Formation で Amazon Redshift 名前空間の招待を受け入れ、データカタログリソースを作成または更新し、データレイクアクセスを有効にするために、次のアクセス許可が必要です。

------
#### [ JSON ]

****  

   ```
       {
       "Version":"2012-10-17",		 	 	 
       "Id": "glue-enable-datalake-access",
       "Statement": [{
               "Effect": "Allow",
               "Action": [
                   "redshift:AssociateDataShareConsumer",
                   "redshift:DescribeDataSharesForConsumer",
                   "redshift:DescribeDataShares",
                   "redshift-serverless:CreateNamespace",
                   "redshift-serverless:CreateWorkgroup",
                   "redshift-serverless:DeleteNamespace",
                   "redshift-serverless:DeleteWorkgroup",
                   "ec2:DescribeAccountAttributes",
                   "ec2:DescribeSubnets",
                   "ec2:DescribeSecurityGroups",
                   "ec2:DescribeAvailabilityZones",
                   "s3:createBucket",
                   "s3:deleteBucket",
                   "s3:putBucketPolicy",
                   "s3:putEncryptionConfiguration",
                   "s3:putLifecycleConfiguration",
                   "s3:putBucketVersioning",
                   "iam:CreateRole"
               ],
               "Resource": "*"
           },
           {
               "Action": [
                   "iam:PassRole"
               ],
               "Effect": "Allow",
               "Resource": "arn:aws:iam::*:role/data transfer role name",
               "Condition": {
                   "StringLike": {
                       "iam:PassedToService": [
                           "glue.amazonaws.com"
                       ]
                   }
               }
           }
       ]
   }
   ```

------

1. フェデレーティッドカタログの作成に使用される IAM ロールがデータレイク管理者でない場合は、ロールに `Create catalog` アクセス許可を付与する必要があります。

**カタログ作成者を作成するには**

   1. Lake Formation コンソール (‭‬[https://console.aws.amazon.com/lakeformation/](https://console.aws.amazon.com/lakeformation/)‬) を開きます。

   1. ナビゲーションペインの **[管理]** で、**[管理ロールとタスク]** を選択します。

   1. **[付与]** を選択します。

   1. **[アクセス許可の付与]** 画面で、IAM ユーザーとロールを選択します。

   1. **[カタログ作成]** のアクセス許可を選択します。

   1. 必要に応じて、付与可能な **[カタログ作成]** アクセス許可を付与することもできます。付与可能なアクセス許可により、カタログ作成者は他のプリンシパルに `Create catalog` アクセス許可を付与できます。

   1. **[付与]** を選択します。

   AWS CLI フェデレーティッドカタログを作成するアクセス許可を付与する の例。

   ```
   aws lakeformation grant-permissions \
   --cli-input-json \
   '{
       "Principal": {
        "DataLakePrincipalIdentifier":"arn:aws:iam::123456789012:role/Admin"
       },
       "Resource": {
           "Catalog": {
           }
       },
       "Permissions": [
           "CREATE_CATALOG",
           "DESCRIBE"
       ]
   }'
   ```

1. 読み取り専用管理者ロールを作成して、Amazon Redshift Query Editor V2 からデータカタログ内の Amazon Redshift フェデレーティッドカタログを検出します。

   Amazon Redshift Query Editor V2 からフェデレーティッドカタログ内の Amazon Redshift テーブルをクエリするには、読み取り専用管理者ロールポリシーに、Amazon Redshift サービスにリンクされたロール `AWSServiceRoleForRedshift` の ARN が含まれていることを確認します。

   ```
    aws lakeformation put-data-lake-settings 
           --region us-east-1 \
           --data-lake-settings \
    '{
      "DataLakeAdmins": [{"DataLakePrincipalIdentifier":"arn:aws:iam::123456789012:role/Admin"}],
      "ReadOnlyAdmins":[{"DataLakePrincipalIdentifier":"arn:aws:iam::123456789012:role/aws-service-role/redshift.amazonaws.com/AWSServiceRoleForRedshift"}],
      "CreateDatabaseDefaultPermissions":[],
      "CreateTableDefaultPermissions":[],
      "Parameters":{"CROSS_ACCOUNT_VERSION":"4","SET_CONTEXT":"TRUE"}
     }'
   ```

1.  ユーザーに代わって Amazon S3 バケットとの間でデータを転送するために Amazon Redshift が引き受けることができるデータ転送ロールを作成します。

   Athena、Amazon EC2 での Amazon EMR などの Apache Iceberg 互換クエリエンジンのデータレイクアクセスを有効にしてデータカタログ内の Amazon Redshift リソースにアクセスする場合は、Amazon S3 バケットとの間でデータ転送を実行するために必要なアクセス許可を持つ IAM ロールを作成する必要があります。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "glue-enable-datalake-access",
       "Statement": [{
         "Sid": "DataTransferRolePolicy",
           "Effect": "Allow",
           "Action": [ "glue:GetCatalog",
                       "glue:GetDatabase",
                       "kms:GenerateDataKey",
                       "kms:Decrypt"],
           "Resource": "*"
       }
       ]
   }
   ```

------

1.  AWS Glue および Amazon Redshift サービスのデータ転送ロールに次の信頼ポリシーを追加して、Amazon S3 バケットとの間でデータを転送するためのロールを引き受けます。

------
#### [ JSON ]

****  

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

------

1.  カスタマーマネージドキーを使用して Amazon Redshift クラスター/名前空間内のデータを暗号化 AWS KMS する場合は、次のキーポリシーをキーに追加します。アカウント番号を有効な AWS アカウント番号に置き換え、データ転送ロール名を指定します。デフォルトでは、Amazon Redshift クラスターのデータは、KMS キーを使用して暗号化されます。Lake Formation には、暗号化用のカスタム KMS キーを作成するオプションがあります。カスタマーマネージドキーを使用している場合は、特定のキーポリシーをキーに追加する必要があります。

   カスタマーマネージドキーの許可を管理する方法の詳細については、[カスタマーマネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)を参照してください。

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Id": "auto-redshift-3",
       "Statement": [{
               "Sid": "RedshiftAllowAccessPolicy",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "*"
               },
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:CreateGrant",
                   "kms:DescribeKey"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "kms:CallerAccount": "111122223333",
                       "kms:ViaService": "redshift.us-east-1.amazonaws.com"
                   }
               }
           },
           {
               "Sid": "RedshiftServerlessAllowAccessPolicy",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "*"
               },
               "Action": [
                   "kms:Encrypt",
                   "kms:Decrypt",
                   "kms:ReEncrypt*",
                   "kms:GenerateDataKey*",
                   "kms:CreateGrant",
                   "kms:DescribeKey"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                       "kms:CallerAccount": "111122223333",
                       "kms:ViaService": "redshift-serverless.us-east-1.amazonaws.com"
                   }
               }
           },
           {
               "Sid": "DirectMetadataAccess",
               "Effect": "Allow",
               "Principal": {
               "AWS": "arn:aws:iam::111122223333:root"
               },
               "Action": [
                   "kms:Describe*",
                   "kms:Get*",
                   "kms:List*",
                   "kms:RevokeGrant"
               ],
               "Resource": "*"
           },
           {
               "Sid": "GenerateDataKeyDecryptDataTransferRole",
               "Effect": "Allow",
               "Principal": {
               "AWS": "arn:aws:iam::111122223333:role/data-transfer-role-name"
               },
               "Action": [
                   "kms:GenerateDataKey",
                   "kms:Decrypt"
               ],
               "Resource": "*",
               "Condition": {
                   "StringEquals": {
                   "kms:ViaService": "s3.us-east-1.amazonaws.com"
                   }
               }
           }
       ]
   }
   ```

------