

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# ALTER DEFAULT PRIVILEGES
<a name="r_ALTER_DEFAULT_PRIVILEGES"></a>

指定したユーザーによって今後作成されるオブジェクトに対して、デフォルトで適用するアクセス許可のセットを定義します。デフォルトでは、ユーザーは自分のデフォルトのアクセス許可のみ変更できます。他のユーザーに対しては、スーパーユーザーのみがデフォルトのアクセス許可を指定できます。

デフォルト権限は、ロール、ユーザー、またはユーザーグループに適用できます。デフォルトのアクセス許可は、現在のデータベースに作成されているすべてのオブジェクトにグローバルに設定することも、指定したスキーマに作成されているオブジェクトにのみ設定することもできます。

デフォルトのアクセス許可は、新しいオブジェクトにのみ適用されます。ALTER DEFAULT PRIVILEGES を実行しても、既存のオブジェクトのアクセス許可は変更されません。データベースまたはスキーマ内の任意のユーザーが作成した現在および将来のすべてのオブジェクトに対するアクセス許可を付与するには、「[スコープ設定アクセス許可](https://docs.aws.amazon.com/redshift/latest/dg/t_scoped-permissions.html)」を参照してください。

データベースユーザーのデフォルト権限に関する情報を表示するには、[PG\$1DEFAULT\$1ACL](r_PG_DEFAULT_ACL.md)システムカタログテーブルをクエリします。

権限の詳細については、「[GRANT](r_GRANT.md)」を参照してください。

## 必要な権限
<a name="r_ALTER_DEFAULT_PRIVILEGES-privileges"></a>

ALTER DEFAULT PRIVILEGES 必要な権限は以下のとおりです。
+ スーパーユーザー
+ ALTER DEFAULT PRIVILEGES の権限を持つユーザー
+ 自身のデフォルトのアクセス権限を変更しているユーザー
+ 自身がアクセス権限を持つスキーマの権限を設定しているユーザー

## 構文
<a name="r_ALTER_DEFAULT_PRIVILEGES-synopsis"></a>

```
ALTER DEFAULT PRIVILEGES
    [ FOR USER target_user [, ...] ]
    [ IN SCHEMA schema_name [, ...] ]
    grant_or_revoke_clause

where grant_or_revoke_clause is one of:

GRANT { { SELECT | INSERT | UPDATE | DELETE | DROP | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] }
	ON TABLES
	TO { user_name [ WITH GRANT OPTION ] | ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
	ON FUNCTIONS
	TO { user_name [ WITH GRANT OPTION ] |  ROLE role_name | GROUP group_name | PUBLIC } [, ...]

GRANT { EXECUTE | ALL [ PRIVILEGES ] }
	ON PROCEDURES
	TO { user_name [ WITH GRANT OPTION ] |  ROLE role_name | GROUP group_name | PUBLIC } [, ...]

REVOKE [ GRANT OPTION FOR ] { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] }
	ON TABLES
	FROM user_name [, ...] [ RESTRICT ]

REVOKE  { { SELECT | INSERT | UPDATE | DELETE | REFERENCES | TRUNCATE } [,...] | ALL [ PRIVILEGES ] }
	ON TABLES
	FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]

REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] }
	ON FUNCTIONS
	FROM user_name [, ...] [ RESTRICT ]

REVOKE { EXECUTE | ALL [ PRIVILEGES ] }
	ON FUNCTIONS
	FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]

REVOKE [ GRANT OPTION FOR ] { EXECUTE | ALL [ PRIVILEGES ] }
	ON PROCEDURES
	FROM user_name [, ...] [ RESTRICT ]

REVOKE { EXECUTE | ALL [ PRIVILEGES ] }
	ON PROCEDURES
	FROM { ROLE role_name | GROUP group_name | PUBLIC } [, ...] [ RESTRICT ]
```

## パラメータ
<a name="r_ALTER_DEFAULT_PRIVILEGES-parameters"></a>

FOR USER *target\$1user*  <a name="default-for-user"></a>
省略可能。デフォルト権限が定義されているユーザーの名前。他のユーザーに対しては、スーパーユーザーのみがデフォルト権限を指定できます。デフォルト値は現在のユーザーです。

IN SCHEMA *schema\$1name*   <a name="default-in-schema"></a>
省略可能。IN SCHEMA 句が表示されている場合、指定したデフォルト権限は、指定の *schema\$1name* で作成された新しいオブジェクトに適用されます。この場合、ALTER DEFAULT PRIVILEGES のターゲットであるユーザーまたはユーザーグループは、指定されたスキーマに対する CREATE権限が必要です。スキーマ固有のデフォルト権限は、既存のグローバルなデフォルト権限に追加されます。デフォルトでは、デフォルト権限はデータベース全体にグローバルに適用されます。

GRANT   <a name="default-grant"></a>
指定したユーザーが作成するすべての新しいテーブルとビュー、関数、またはストアドプロシージャについて、指定したユーザーやグループに付与する権限のセット。GRANT 句では、[GRANT](r_GRANT.md)コマンドと同じ権限とオプションを設定できます。

WITH GRANT OPTION   <a name="default-grant-option"></a>
権限を付与されるユーザーが、他のユーザーにも同じ権限を付与できることを示します。WITH GRANT OPTION をグループまたは PUBLIC に付与することはできません。

TO *user\$1name* \$1 ROLE *role\$1name* \$1 GROUP *group\$1name*   <a name="default-to"></a>
指定したデフォルト権限が適用されるユーザー、ロール、またはユーザーグループの名前。

REVOKE   <a name="default-revoke"></a>
指定したユーザーが作成するすべての新しいテーブル、関数、またはストアドプロシージャについて、指定したユーザーやグループから取り消す権限のセット。REVOKE 句では、[REVOKE](r_REVOKE.md)コマンドと同じ権限とオプションを設定できます。

GRANT OPTION FOR  <a name="default-revoke-option"></a>
 他のユーザーに特定の権限を付与するオプションのみを取り消し、権限自体は取り消しません。グループや PUBLIC の GRANT OPTION を取り消すことはできません。

FROM *user\$1name* \$1 ROLE *role\$1name* \$1 GROUP *group\$1name*  <a name="default-from"></a>
指定した権限をデフォルトで取り消すユーザー、ロール、またはユーザーグループの名前。

RESTRICT   <a name="default-restrict"></a>
RESTRICT オプションは、ユーザーが直接付与した権限のみを取り消します。これがデフォルトです。

## 例
<a name="r_ALTER_DEFAULT_PRIVILEGES-examples"></a>

ユーザーグループ `report_readers` に属する任意のユーザーに対して、ユーザー `report_admin` が作成したすべてのテーブルとビューを表示することを許可するとします。この場合は、スーパーユーザーとして次のコマンドを実行します。

```
alter default privileges for user report_admin grant select on tables to group report_readers; 
```

次の例では、最初のコマンドは、作成するすべての新しいテーブルに対する SELECT 権限を付与します。新しいビューを作成するたびに、ビューに対する権限を明示的に付与するか、`alter default privileges` コマンドを再度実行する必要があります。

```
alter default privileges grant select on tables to public; 
```

次の例では、`sales_admin`スキーマで作成するすべての新しいテーブルとビューに対して、`sales`ユーザーグループに INSERT 権限が付与されます。

```
alter default privileges in schema sales grant insert on tables to group sales_admin; 
```

次の例では、前の例とは逆に ALTER DEFAULT PRIVILEGES コマンドで権限を取り消します。

```
alter default privileges in schema sales revoke insert on tables from group sales_admin;
```

デフォルトでは、PUBLIC ユーザーグループはすべての新しいユーザー定義関数に対する実行許可を付与されます。新しい関数に対する `public` の実行許可を取り消して、`dev_test`ユーザーグループにのみ実行許可を付与するには、次のコマンドを実行します。

```
alter default privileges revoke execute on functions from public;
alter default privileges grant execute on functions to group dev_test;
```