データベースロールのアクセス許可を使用した Amazon Redshift Serverless データベースオブジェクトへのアクセス - Amazon Redshift

データベースロールのアクセス許可を使用した Amazon Redshift Serverless データベースオブジェクトへのアクセス

この手順では、Amazon Redshift データベースロールを通じてテーブルをクエリするアクセス許可を付与する方法を示します。ロールを割り当てるには、IAM でユーザーにタグをアタッチします。ユーザーがサインインすると、ロールが Amazon Redshift に渡されます。これは、「Amazon Redshift Serverless のフェデレーションユーザーに付与するデータベースロールの定義」の概念の例に基づく説明です。これらのステップを実行する利点は、ユーザーをデータベースロールに関連付けることで、データベースオブジェクトごとにアクセス許可を設定する必要がなくなることです。これにより、ユーザーがテーブルに対して実行するクエリ、変更、データの追加や、その他のアクションを管理しやすくなります。

この手順では、ユーザーが Amazon Redshift Serverless データベースをセットアップ済みであり、データベースにアクセス許可を付与できることを前提としています。また、AWS コンソールでの IAM ユーザーの作成、IAM ロールの作成、ポリシー許可の割り当てに対するアクセス許可を持っていることを前提としています。

  1. IAM コンソールを使用して IAM ロールを作成します。後で、このユーザーを使用してデータベースに接続します。

  2. クエリエディタ v2 または別の SQL クライアントを使用して、Redshift データベースロールを作成します。データベースロールの作成の詳細については、「CREATE ROLE」を参照してください。

    CREATE ROLE urban_planning;

    SVV_ROLES システムビューにクエリを実行し、ロールが作成済みであることを確認します。このクエリでは、システムロールも返されます。

    SELECT * from SVV_ROLES;
  3. 作成したデータベースロールに、テーブルから選択するためのアクセス許可を付与します  (作成した IAM ユーザーは、このデータベースロールにより、最終的にサインインしてテーブルからレコードを選択します)。次のコード例のロール名とテーブル名はサンプルです。ここでは、cities という名前のテーブルから選択するためのアクセス許可を付与します。

    GRANT SELECT on TABLE cities to ROLE urban_planning;
  4. AWS Identity and Access Management コンソールを使用して IAM ロールを作成します。このロールは、クエリエディタ v2 を使用するためのアクセス許可を付与します。新しい IAM ロールを作成し、信頼できるエンティティタイプとして、AWS アカウントを選択します。次に [このアカウント] を選択します。以下のポリシーのアクセス許可をロールに付与します。

    • AmazonRedshiftReadOnlyAccess

    • tag:GetResources

    • tag:GetTagKeys

    • sqlworkbench:ListDatabases と sqlworkbench:UpdateConnection を含む、sqlworkbench のすべてのアクション。

  5. IAM コンソールで、以前に作成した IAM ユーザーにキー RedshiftDbRoles を使用してタグを追加します。タグの値は、最初のステップで作成したデータベースロールと一致する必要があります。それは urban_planning サンプルにあります。

これらのステップを完了したら、IAM コンソールで作成したユーザーに IAM ロールを割り当てます。ユーザーがクエリエディタ v2 を使用してデータベースにサインインすると、タグ内のデータベースロール名が Amazon Redshift に渡され、ユーザーに関連付けられます。このデータベースロールにより、ユーザーは適切なテーブルをクエリできます。例えば、このサンプルのユーザーは urban_planning データベースロールを通じて cities テーブルをクエリできます。