オープンテーブルコネクタ > オープンテーブルへの接続 > 前提条件
  

前提条件

オープンテーブル接続を作成する前に、前提条件を満たしてください。

AWS GlueカタログとAmazon S3ストレージを使用したApache IcebergまたはDelta Lakeテーブルの操作

AWS GlueカタログとAmazon S3ストレージを使用してApache IcebergまたはDelta Lakeテーブルを操作する場合は、AWS上のテーブルを管理する次のAWSサービスにアクセスできる必要があります。
これらのサービスにアクセスするには、個別のポリシーを作成する必要があります。

HiveメタストアカタログとMicrosoft Azure Data Lake Storage Gen2を使用したApache Icebergテーブルの操作

HiveメタストアカタログとMicrosoft Azure Data Lake Storage Gen2を使用してApache Icebergテーブルを操作する場合は、Microsoft Azure Data Lake Storage Gen2上のテーブルを管理する次のサービスにアクセスできる必要があります。

HiveメタストアカタログとAmazon S3ストレージを使用したApache Icebergテーブルの操作

HiveメタストアカタログとAmazon S3ストレージを使用してApache Icebergテーブルを操作する場合は、Amazon S3ストレージ上のテーブルを管理する次のサービスにアクセスできる必要があります。

RESTカタログとAmazon S3を使用したApache Icebergテーブルの操作

PolarisカタログなどのRESTカタログとAmazon S3ストレージを使用してApache Icebergテーブルを操作する場合は、Amazon S3ストレージ上のテーブルを管理する次のサービスにアクセスできる必要があります。

最小限のIAMポリシーの作成

AWS Glueカタログによって管理されるApache IcebergテーブルまたはDelta Lakeテーブルを操作するためには、最低限必要な権限を持つIAMポリシーを作成する必要があります。これらのポリシーの設定方法の詳細については、AWSのマニュアルを参照してください。
Amazon Athenaの最小限のポリシー
次のサンプルポリシーは、Amazon Athenaにアクセスするための最小限のAmazon IAMポリシーを示しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"athena:CreatePreparedStatement",
"athena:GetPreparedStatement",
"athena:GetWorkGroup",
"athena:GetTableMetadata",
"athena:StartQueryExecution",
"athena:GetQueryResultsStream",
"athena:ListDatabases",
"athena:GetQueryExecution",
"athena:GetQueryResults",
"athena:GetDatabase",
"athena:ListTableMetadata",
"athena:GetDataCatalog",
"athena:DeletePreparedStatement"
],
"Resource": [
"arn:aws:athena:*:*:workgroup/*",
"arn:aws:athena:*:*:datacatalog/*"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"athena:ListDataCatalogs",
"athena:GetQueryExecution",
"athena:ListWorkGroups",
"athena:GetPreparedStatement"
],
"Resource": "*"
}
]
}
AWS Glueの最小限のポリシー
次のサンプルポリシーは、AWS Glueカタログにアクセスするための最小限のAmazon IAMポリシーを示しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"glue:*"
],
"Resource": [
"*"
]
}
]
}
AWS S3の最小限のポリシー
次のサンプルポリシーは、Amazon S3バケットに対してデータの読み取りと書き込みを行うための最小限のAmazon IAMポリシーを示しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": "*"
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetBucketLocation",
"s3:ListAllMyBuckets",
"s3:GetBucketAcl"
],
"Resource": [
"*"
]
}
]
}

Hiveメタストア用にHive JDBCドライバをインストールする

オープンテーブルコネクタを使用する前に、Secure AgentをインストールしたLinuxマシンにHive JDBCドライバをコピーする必要があります。Hive JDBCドライバは、Hiveメタストアカタログ用に使用する必要があります。
    1最新のHive JDBCドライバをWebサイトからダウンロードしてください。
    2Secure Agentマシンの次のディレクトリに移動します。<Secure Agentのインストールディレクトリ>/ext/connectors/thirdparty/
    3次のフォルダを作成します: informatica.opentableformat/common
    4JDBCドライバをフォルダに追加します。
    5Secure Agentを再起動します。

ロールを引き受けるためのEC2ロールの設定

IAMロールを引き受けるようにEC2ロールを設定し、同じAWSアカウントまたは異なるAWSアカウントからAmazon S3に接続するための一時的なセキュリティ資格情報を生成できます。
ロールを引き受けるようにEC2ロールを設定する場合は、一時的なセキュリティ資格情報を使用するためのsts:AssumeRole権限が割り当てられており、AWSアカウント内で信頼関係が確立されていることを確認してください。信頼関係は、ロールを作成するときに、IAMロールの信頼ポリシーで定義されます。IAMロールにより、EC2ロールを信頼されたエンティティとして追加し、EC2ロールに一時的なセキュリティ資格情報の使用とAWSアカウントへのアクセスを許可します。
信頼されたEC2ロールが一時的なセキュリティ資格情報を要求すると、AWS Security Token Service(AWS STS)によって、指定した期間有効な一時的なセキュリティ資格情報が動的に生成され、信頼されたEC2ロールにその資格情報が提供されます。
ロール認証を引き受けるためのEC2ロールを使用する前に、次の前提条件を考慮してください。
最小の権限ポリシーの詳細については、「最小限のIAMポリシーの作成」を参照してください。

アカウント間アクセスの設定

EC2インスタンス上で実行されているSecure Agentが1つのAWSアカウントにあり、Apache Icebergテーブル、AWS Glueカタログ、およびAthenaワークグループが別のAWSアカウントにある場合でも、アカウント間アクセスを設定できます。
アカウントBで実行されているEC2エージェントが、アカウントAにあるAWS Glueカタログ、Athenaワークグループ、およびApache Icebergテーブルにアクセスできるように、アカウント間IAMロールとポリシーを設定する例を次に示します。
EC2インスタンスにアカウント間アクセスを設定するには、次の手順を実行します。
  1. 1AWS Glueカタログ、Amazon Athena、およびAmazon S3用のIAMポリシーをアカウントAに作成します。
  2. 2アカウントAに、外部IDを使用してアカウントBがロールを引き受けることができるようにする信頼ポリシーを持つIAMロールを作成します。
  3. 3アカウントBにIAMポリシーを作成し、EC2インスタンスがアカウントAのロールを引き受けることができるようにします。
  4. 4アカウントBのEC2インスタンスにIAMロールを作成し、割り当てます。

アカウントAでのIAMポリシーの作成

AWS Glueカタログ、Amazon Athena、およびAmazon S3を操作するには、必要な最低限​​の権限を持つIAMポリシーを作成する必要があります。
  1. 1IAMコンソールにログインします。
  2. 2[Policies(ポリシー)] > [Create policy(ポリシーの作成)]をクリックします。
  3. 3[JSON]タブで、次のポリシーを追加します。
  4. Amazon Athenaの最小限のポリシー
    次のサンプルポリシーは、Amazon Athenaにアクセスするための最小限のAmazon IAMポリシーを示しています。
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "VisualEditor0",
    "Effect": "Allow",
    "Action": [
    "athena:CreatePreparedStatement",
    "athena:GetPreparedStatement",
    "athena:GetWorkGroup",
    "athena:GetTableMetadata",
    "athena:StartQueryExecution",
    "athena:GetQueryResultsStream",
    "athena:ListDatabases",
    "athena:GetQueryExecution",
    "athena:GetQueryResults",
    "athena:GetDatabase",
    "athena:ListTableMetadata",
    "athena:GetDataCatalog",
    "athena:DeletePreparedStatement",
    "athena:ListWorkGroups",
    "athena:ListDataCatalogs"
    ],
    "Resource": [
    "arn:aws:athena:*:*:workgroup/*",
    "arn:aws:athena:*:*:datacatalog/*"
    ]
    },
    {
    "Sid": "VisualEditor1",
    "Effect": "Allow",
    "Action": [
    "athena:ListDataCatalogs",
    "athena:GetQueryExecution",
    "athena:ListWorkGroups",
    "athena:GetPreparedStatement"
    ],
    "Resource": "*"
    }
    ]
    }
    AWS Glueの最小限のポリシー
    次のサンプルポリシーは、AWS Glueカタログにアクセスするための最小限のAmazon IAMポリシーを示しています。
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "VisualEditor0",
    "Effect": "Allow",
    "Action": [
    "glue:*"
    ],
    "Resource": "*"
    }
    ]
    }
    Amazon S3の最小限のポリシー
    次のサンプルポリシーは、Amazon S3バケットに対してデータの読み取りと書き込みを行うための最小限のAmazon IAMポリシーを示しています。
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "VisualEditor0",
    "Effect": "Allow",
    "Action": [
    "s3:PutObject",
    "s3:GetObject",
    "s3:ListBucket",
    "s3:DeleteObject"
    ],
    "Resource": "*"
    },
    {
    "Effect": "Allow",
    "Action": [
    "s3:ListBucket",
    "s3:GetBucketLocation",
    "s3:ListAllMyBuckets",
    "s3:GetBucketAcl"
    ],
    "Resource": [
    "*"
    ]
    }

    ]
    }

アカウントAでのIAMロールの作成

アカウントAに、外部IDを使用してアカウントBがロールを引き受けることができるようにする信頼ポリシーを持つIAMロールを作成します。
  1. 1IAMコンソールで、[IAM] > [Roles(ロール)] > [Create Role(ロールを作成)]をクリックします。
  2. 2[Step 1: Select trusted entities(ステップ1: 信頼済みエンティティの選択)]タブの[Trusted entity type(信頼済みエンティティのタイプ)]セクションで、[AWS account(AWSアカウント)]を選択します。
  3. 3[An AWS account(AWSアカウント)]セクションで、[Another AWS account(別のAWSアカウント)]を選択し、Secure AgentがインストールされているEC2インスタンスをホストしているアカウントBのアカウントIDを入力します。
  4. 4[Options(オプション)][Require External ID(外部IDが必要)]を選択し、安全な外部IDを入力します。
  5. 5[Next(次へ)]をクリックします
  6. 6[Step 2 Add permissions(ステップ2: アクセス許可を追加する)]タブで、AWS Glueカタログ、Amazon Athena、およびAmazon S3にアクセスするための作成済みのアクセス許可ポリシーを選択してアタッチします。
  7. 7次へをクリックします
  8. 8[Step 3 Name, review, and create(ステップ3: 名前、確認、および作成)]タブで、ロールの[Name(名前)]を入力します。
  9. 9[Create role(ロールの作成)]をクリックします。
  10. ロールを作成した後に、IAMロールのARNをコピーします。ロール認証を引き受けるためのEC2ロール用にアカウント間アクセスを使用するには、Open Table接続でIAMロールARNを指定する必要があります。
  11. 10[Trust relationships(信頼関係)]タブでは、IAMロールの信頼関係ポリシーを表示できます。
  12. 次の例に、IAMロールの信頼関係ポリシーを示します。
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Effect": "Allow",
    "Principal": {
    "AWS": [
    "arn:aws:iam::123456789101:root"
    ]
    },
    "Action": "sts:AssumeRole",
    "Condition": {
    "StringEquals": {
    "sts:ExternalId": "opentable"
    }
    }
    }
    ]
    }

アカウントBでのIAMポリシーの作成

EC2インスタンスがアカウントAのIAMロールを引き受けることができるように、アカウントBにIAMポリシーを作成します。
  1. 1IAMコンソールで、[Policies(ポリシー)] > [Create policy(ポリシーの作成)]をクリックします。
  2. 2[JSON]タブで、次のポリシーを追加します。
  3. {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "VisualEditor0",
    "Effect": "Allow",
    "Action": "sts:AssumeRole",
    "Resource": "arn:aws:iam::AccountAID:role/assumerolename"
    }
    ]
    }
    ポリシーの[Resource(リソース)]フィールドの値は、アカウントAで作成されたIAMロールのARNです。arn:aws:iam::AccountAID:role/assumerolenameを実際のIAMロールARNに置き換えてください。
  4. 3次へをクリックします
  5. 4ポリシーに名前を付けてから、[Create Policy(ポリシーの作成)]をクリックします。

アカウントBでのEC2インスタンスへのIAMロールの作成と割り当て

アカウントBでEC2インスタンスにIAMロールを作成するには、次の手順を実行します。
  1. 1IAMコンソールで、[IAM] > [Roles(ロール)] > [Create Role(ロールを作成)]をクリックします。
  2. 2[Step 1: Select trusted entities(ステップ1: 信頼済みエンティティの選択)]タブの[Trusted entity type(信頼済みエンティティのタイプ)]セクションで、[AWS service(AWSサービス)]を選択します。
  3. 3[Use case(ユースケース)][EC2]を選択します。
  4. 4[Next(次へ)]をクリックします
  5. 5[Step 2 Add permissions(ステップ2: 権限の追加)]タブで、アカウントBで作成したポリシーを選択してアタッチします。
  6. 6次へをクリックします
  7. 7[Step 3 Name, review, and create(ステップ 3: 名前、確認、および作成)]タブで、ロールの[Name(名前)][Description(説明)]を入力します。
  8. 8[Create role(ロールの作成)]をクリックします。
EC2インスタンスにIAMロールを割り当てるには、次の手順を実行します。
  1. 1EC2コンソールにログインします。
  2. 2インスタンスを選択してから、[Actions(アクション)] > [Security(セキュリティ)] > [Modify IAM role(IAMロールの変更)]をクリックします。
  3. 3作成したロールを選択し、[Update IAM role(IAMロールの更新)]をクリックします。
必要に応じて、IPアドレスをホワイトリストに登録するには、次の手順を実行します。
  1. 1[Security(セキュリティ)]タブで、関連付けられている[Security Group(セキュリティグループ)]のIDをクリックします。
  2. 2[Edit inbound rules(インバウンドルールの編集)]をクリックします。
  3. 3[Add rule(ルールの追加)]をクリックし、[Protocol(プロトコル)][Port range(ポート範囲)]を選択します。
  4. 4[Source(ソース)][Custom(カスタム)]を選択し、ホワイトリストに登録する特定のIPアドレスを入力します。
  5. 5[Save rule(ルールの保存)]をクリックします。