Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、ブログ記事
Amazon Redshift フェデレーティッドアクセス許可カタログでのアクセスコントロールの管理
Amazon Redshift フェデレーティッドアクセス許可を使用すると、ユーザーは AWS アカウント の任意の Redshift ウェアハウスから大まかなアクセスコントロールときめ細かなアクセスコントロールの両方を定義できます。大まかなアクセス許可は、範囲付きアクセス許可を含むテーブル、ビュー、データベースオブジェクトへのアクセスを管理します。一方、きめ細かなコントロールは、列レベルの権限と、行レベルセキュリティ (RLS) や動的データマスキング (DDM) などのセキュリティポリシーの適用が可能になります。
GRANT、REVOKE
フェデレーティッドアクセス許可を使用すると、任意の Redshift ウェアハウスから Redshift フェデレーティッドアクセス許可データベースのテーブルとビューで、データの読み取り、書き込みを行うアクセス許可など、テーブルレベルのアクセス許可を定義できます。
GRANT SELECT ON "sales_db@finance-catalog".sales_schema.sales_table TO "IAMR:sales_analyst"; GRANT INSERT ON "sales_db@finance-catalog".sales_schema.sales_view TO "IAMR:sales_data_engineer"; REVOKE UPDATE ON "sales_db@finance-catalog".sales_schema.us_sales_view FROM "IAMR:us_sales_analyst"; REVOKE DELETE ON "sales_db@finance-catalog".sales_schema.us_sales_view FROM "IAMR:us_sales_analyst";
Amazon Redshift フェデレーティッドアクセス許可は、データベースまたはスキーマ内のタイプのすべてのオブジェクトに対するアクセス許可を付与または取り消すための範囲付きアクセス許可をサポートします。
GRANT SELECT FOR TABLES IN SCHEMA "sales_db@finance-catalog".sales_schema TO "IAMR:sales_manager"; REVOKE UPDATE FOR TABLES IN SCHEMA sales_schmea DATABASE "sales_db@finance-catalog" FROM "IAMR:sales_analyst";
データベースに対するアクセス許可の付与と取り消しを定義できます。
GRANT CREATE ON DATABASE "sales_db@finance-catalog" TO "IAMR:sales_admin"; REVOKE TEMP ON DATABASE "sales_db@finance-catalog" FROM "IAMR:sales_analyst";
Amazon Redshift フェデレーティッドアクセス許可でサポートされている grant 構文の詳細については、「Amazon Redshift フェデレーティッドアクセス許可カタログで付与できるアクセス許可」を参照してください。
きめ細かなアクセスコントロール
Amazon Redshift フェデレーションアクセス許可を持つデータベースで、列レベルのアクセスコントロール、行レベルセキュリティ (RLS)、動的データマスキング (DDM) を使用して、機密データに対するきめ細かなアクセスコントロールを定義できます。列レベルのアクセスコントロールを使用すると、テーブルとビューに対してよりきめ細かな列レベルのアクセス権限を定義できます。データベースの sys:secadmin ロールを持つスーパーユーザーおよびユーザーまたはロールは、RLS および DDM ポリシーを作成し、これらのポリシーを特定のリレーションにアタッチして、リレーションで RLS を有効にできます。
列レベルのアクセスコントロール:
テーブルまたはビューの個々の列に対して特定の権限を付与または取り消すことができます。
GRANT SELECT ON "sales_db@finance-catalog".sales_schema.sales_table(order_number, sales_date, purchase_amount, sale_amount) TO "IAMR:sales_revenue_analyst"; REVOKE UPDATE ON "sales_db@finance-catalog".sales_schema.us_sales_view(order_number, sales_date, purchase_amount, sale_amount) FROM "IAMR:sales_revenue_analyst";
行レベルセキュリティ (RLS):
リレーションの行レベルセキュリティをオンまたはオフにできます。
ALTER TABLE "sales_db@finance-catalog".sales_schema.sales_table ROW LEVEL SECURITY ON;
データベースで RLS ポリシーを作成、変更、削除できます。
-- Create an RLS policy CREATE RLS POLICY "sales_db@finance-catalog".policy_america WITH (region VARCHAR(10)) USING (region = 'USA'); -- Alter an RLS policy ALTER RLS POLICY "sales_db@finance-catalog".policy_america USING (region IN ('USA', 'CANADA', 'Mexico')); -- Drop an RLS policy DROP RLS POLICY "sales_db@finance-catalog".policy_america;
リレーションで RLS ポリシーをアタッチまたはデタッチできます。
-- Attach an RLS policy ATTACH RLS POLICY "sales_db@finance-catalog".policy_america ON "sales_db@finance-catalog".sales_schema.sales_table TO "IAMR:america_sales_analyst"; -- Detach an RLS policy DETACH RLS POLICY "sales_db@finance-catalog".policy_america ON "sales_db@finance-catalog".sales_schema.sales_view_america FROM "IAMR:global_sales_analyst";
動的データマスキング (DDM):
データベースでマスキングポリシーを作成、変更、削除できます。
-- Create a masking policy CREATE MASKING POLICY "sales_db@finance-catalog".hash_credit WITH (credit_card varchar(256)) USING (sha2(credit_card + 'testSalt', 256)); -- Alter an masking policy ALTER MASKING POLICY "sales_db@finance-catalog".hash_credit USING (sha2(credit_card + 'otherTestSalt', 256)); -- Drop an masking policy DROP MASKING POLICY "sales_db@finance-catalog".hash_credit;
リレーションでマスキングポリシーをアタッチまたはデタッチできます。
-- Attach a masking policy ATTACH MASKING POLICY hash_credit ON "sales_db@finance-catalog".sales_schema.transaction_table (credit_card) TO "IAMR:sales_analyst" PRIORITY 30; -- Detach a masking policy DETACH MASKING POLICY hash_credit ON "sales_db@finance-catalog".sales_schema.transaction_view (credit_card) FROM "IAMR:transaction_analyst";
スーパーユーザーまたは sys:secadmin 権限を持つユーザーは、SHOW POLICIES コマンドを使用して、RLS ポリシーと DDM ポリシー、およびフェデレーティッドアクセス許可を持つリレーションの添付ファイルを表示できます。
注記
-
RLS のユーザー定義関数 (UDF)、DDM ポリシー定義は、Amazon Redshift フェデレーティッドアクセス許可ではサポートされていません。
-
Redshift SQL 関数 user_is_member_of、role_is_member_of、user_is_member_of_role は、Amazon Redshift フェデレーティッドアクセス許可ではサポートされていません。
Amazon Redshift フェデレーティッドアクセス許可カタログで付与できるアクセス許可
さまざまな詳細レベルのリソースに対する Amazon Redshift フェデレーションアクセス許可を持つデータベースに対するアクセス許可管理をサポートする SQL ステートメント。この構文は、ローカルテーブル参照 (リソースを含むデータベースに接続されている場合、またはソースデータベースが使用中の場合) と完全修飾クロスデータベース参照の両方をサポートします。
注記:
-
usernameは、IAM ユーザー、IAM ロール、IdC (AWS IAM アイデンティティセンター) ユーザーを参照できます。 -
role_nameは IdC グループを参照できます。IAM グループはサポートされていません。
大まかなアクセス許可
GRANT { SELECT | INSERT | UPDATE | DELETE | TRUNCATE} ON [ TABLE ] { table_name | database@catalog.schema_name.table_name } TO { username | ROLE role_name | PUBLIC } REVOKE { SELECT | INSERT | UPDATE | DELETE | TRUNCATE } ON [ TABLE ] { table_name | database@catalog.schema_name.table_name } FROM { username | ROLE role_name | PUBLIC }
列レベルの権限
GRANT { { SELECT | UPDATE | DELETE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { table_name | database@catalog.schema_name.table_name } TO { username | ROLE role_name | PUBLIC } REVOKE { { SELECT | UPDATE | DELETE } ( column_name [, ...] ) [, ...] | ALL [ PRIVILEGES ] ( column_name [,...] ) } ON { table_name | database@catalog.schema_name.table_name } FROM { username | ROLE role_name | PUBLIC }
範囲付きアクセス許可
GRANT { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASEdatabase@catalogTO {username[ WITH GRANT OPTION ] | ROLErole_name} [, ...] GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } } FOR TABLES IN { SCHEMAschema_name[DATABASEdatabase@catalog] | DATABASEdatabase@catalog} TO {username[ WITH GRANT OPTION ] | ROLErole_name} [, ...] REVOKE [ GRANT OPTION ] { CREATE | USAGE | ALTER | DROP } [,...] | ALL [ PRIVILEGES ] } FOR SCHEMAS IN DATABASEdatabase@catalogFROM {username| ROLErole_name} [, ...] REVOKE [ GRANT OPTION ] { { SELECT | INSERT | UPDATE | DELETE | DROP | ALTER | TRUNCATE | REFERENCES } [, ...] } | ALL [ PRIVILEGES ] } } FOR TABLES IN { SCHEMAschema_name[ DATABASEdatabase@catalog] | DATABASEdatabase@catalog} FROM {username| ROLErole_name} [, ...]