

 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/)を参照してください。

# 使用に関する注意事項
<a name="r_REVOKE-usage-notes"></a>

オブジェクトから権限を取り消すには、次の条件のうち 1 つを満たす必要があります。
+ オブジェクトの所有者であること。
+ スーパーユーザーであること。
+ そのオブジェクトと権限に関する付与権限があること。

  例えば、次のコマンドは、employees テーブルに対する SELECT コマンドの実行と、他のユーザーに対する同じ権限の付与と取り消しの両方をユーザー HR に許可します。

  ```
  grant select on table employees to HR with grant option;
  ```

  HR は、SELECT 以外のオペレーションに関する権限や employees 以外のテーブルに関する権限を取り消すことはできません。

スーパーユーザーは、オブジェクトの権限を設定する GRANT コマンドと REVOKE コマンドに関係なく、すべてのオブジェクトにアクセスできます。

PUBLIC は、常にすべてのユーザーを含むグループを表します。デフォルトでは、PUBLIC スキーマに対して、PUBLIC のすべてのメンバーが CREATE 特権および USAGE 特権を持ちます。PUBLIC スキーマのすべてのユーザーのアクセス許可を制限するには、まず PUBLIC スキーマの PUBLIC からすべてのアクセス許可を取り消し、次に特定のユーザーまたはグループに権限を付与します。次の例では、PUBLIC スキーマのテーブル作成権限を管理します。

```
revoke create on schema public from public;
```

Lake Formation テーブルから権限を取り消すには、テーブルの外部スキーマに関連付けられた IAM ロールに、外部テーブルから許可を取り消す権限が必要です。次の例では、IAM ロール `myGrantor` に関連付けられた外部スキーマを作成します。IAM ロール `myGrantor` には、他のユーザーからアクセス許可を取り消すアクセス許可があります。REVOKE コマンドは、外部スキーマに関連付けられている IAM ロール `myGrantor` のアクセス許可を使用して、IAM ロール `myGrantee` のアクセス許可を取り消します。

```
create external schema mySchema
from data catalog
database 'spectrum_db'
iam_role 'arn:aws:iam::123456789012:role/myGrantor'
create external database if not exists;
```

```
revoke select
on external table mySchema.mytable
from iam_role 'arn:aws:iam::123456789012:role/myGrantee';
```

**注記**  
Lake Formation で有効になっている AWS Glue Data Catalog の `ALL` アクセス許可が、IAM ロールにもある場合は、この `ALL` アクセス許可は取り消されません。`SELECT` アクセス許可のみ取り消されます。Lake Formation アクセス許可は、Lake Formation コンソールで表示することができます。

## ASSUMEROLE アクセス許可を取り消すための使用上の注意事項
<a name="r_REVOKE-usage-notes-assumerole"></a>

以下の使用上の注意は、Amazon Redshift で ASSUMEROLE 権限を取り消す場合に適用されます。

データベースのスーパーユーザーのみが、ユーザーおよびグループの ASSUMEROLE 権限を取り消すことができます。スーパーユーザーは、常に ASSUMEROLE 権限を保持します。

ユーザーおよびグループに対して ASSUMEROLE 権限の使用を有効にするために、スーパーユーザーはクラスター上で次のステートメントを 1 回実行します。ユーザーおよびグループに ASSUMEROLE 権限を付与する前に、スーパーユーザーはクラスター上で次のステートメントを 1 回実行する必要があります。

```
revoke assumerole on all from public for all;
```

## 機械学習アクセス許可の取り消しに関する使用上の注意事項
<a name="r_REVOKE-usage-notes-create-model"></a>

ML 関数に関連するアクセス許可を直接付与または取り消すことはできません。ML 関数は ML モデルに属し、アクセス許可はモデルを通じて制御されます。代わりに、ML モデルに関連するアクセス許可を取り消すことができます。次の例は、モデル `customer_churn` に関連付けられたすべてのユーザーから実行アクセス許可を取り消す方法を示しています。

```
REVOKE EXECUTE ON MODEL customer_churn FROM PUBLIC;
```

ML モデル `customer_churn` に対するすべてのアクセス許可をユーザーから取り消すこともできます。

```
REVOKE ALL on MODEL customer_churn FROM ml_user;
```

スキーマに ML 関数がある場合、その ML 関数が既に `GRANT EXECUTE ON MODEL` を通じて `EXECUTE` アクセス許可を持っている場合でも、ML 関数に関連する `EXECUTE` アクセス許可の付与または取り消しは失敗します。`CREATE MODEL` コマンドを使用して ML 関数を個別のスキーマに保持するときには、個別のスキーマを使用することをお勧めします。次の例は、その方法を示しています。

```
CREATE MODEL ml_schema.customer_churn
FROM customer_data
TARGET churn
FUNCTION ml_schema.customer_churn_prediction
IAM_ROLE default
SETTINGS (
 S3_BUCKET 'amzn-s3-demo-bucket'
);
```