

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 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/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Amazon Redshift 中管理資料共用的許可
<a name="writes-managing-permissions"></a>

身為生產者管理員，您可以保留您所共用資料集的控制權。您可以將新物件新增至資料共用，或從資料共用中移除物件。您也可以授予或撤銷取用者叢集、 AWS 帳戶或 AWS 區域的整個資料共用存取權。當許可被撤銷時，取用者叢集會立即失去共用物件的存取權，並無法在 SVV\$1DATASHARES 的 INBOUND 資料共用清單中看到共用物件。

下列範例會建立資料共用 `salesshare`、新增結構描述 `public`，並將資料表 `public.tickit_sales_redshift` 新增至 `salesshare`。另外還會將 `salesshare` 的使用許可授予指定的命名空間。

```
CREATE DATASHARE salesshare;
            
ALTER DATASHARE salesshare ADD SCHEMA public;

ALTER DATASHARE salesshare ADD TABLE public.tickit_sales_redshift; 

GRANT USAGE ON DATASHARE salesshare TO NAMESPACE '13b8833d-17c6-4f16-8fe4-1a018f5ed00d';
```

對於 CREATE DATASHARE，超級使用者和資料庫擁有者可以建立資料庫。如需詳細資訊，請參閱[CREATE DATASHARE](r_CREATE_DATASHARE.md)。對於 ALTER DATASHARE，在要新增或移除的資料共用物件上有所需許可的資料共用擁有者可以修改資料共用。如需相關資訊，請參閱[ALTER DATASHARE](r_ALTER_DATASHARE.md)。

身為生產者管理員，當您捨棄資料共用時，資料共用不會再列在取用者叢集上。使用者叢集上從捨棄的資料共用中建立的資料庫和結構描述參考會繼續存在，但其中沒有任何物件。取用者管理員必須手動刪除這些資料庫。

在取用者方面，取用者管理員可以透過從資料共用建立資料庫來決定哪些使用者和角色應該可以存取共用資料。根據您在建立資料庫時所選擇的選項，您可以按照下列方式控制對資料庫的存取。如需從資料共用建立資料庫的詳細資訊，請參閱 [CREATE DATABASE](r_CREATE_DATABASE.md)。

如需設定資料共用和從取用者讀取資料的詳細資訊，請參閱[共用 AWS 帳戶中資料的讀取存取權](https://docs.aws.amazon.com/redshift/latest/dg/within-account.html)。

**建立沒有 WITH PERMISSIONS 子句的資料庫**  
管理員可以在資料庫或結構描述層級上控制存取權。若要在結構描述層級上控制存取權，管理員必須從在資料共用中建立的 Amazon Redshift 資料庫建立外部結構描述。

下列範例會授予在資料庫層級和結構描述層級上存取共用資料表的許可。

```
GRANT USAGE ON DATABASE sales_db TO Bob;

CREATE EXTERNAL SCHEMA sales_schema FROM REDSHIFT DATABASE sales_db SCHEMA 'public';

GRANT USAGE ON SCHEMA sales_schema TO ROLE Analyst_role;
```

若要進一步限制存取權，您可以在共用物件頂端建立檢視，僅公開必要的資料。然後，您可以使用這些視觀表將存取權提供給使用者和角色。

對使用者授予資料庫或結構描述的存取權之後，使用者就可以存取該資料庫或結構描述中的所有共用物件。

**使用 WITH PERMISSIONS 子句建立資料庫**  
授予資料庫或結構描述的使用權之後，系統管理員可以使用與本機資料庫或結構描述相同的權限授予程序，進一步控制存取權。如果沒有個別物件權限，使用者就無法存取資料附屬資料庫或結構描述中的任何物件，即使在被授予 USAGE 權限之後也一樣。

下列範例會授予在資料庫層級上存取共用資料表的許可。

```
GRANT USAGE ON DATABASE sales_db TO Bob;
GRANT USAGE FOR SCHEMAS IN DATABASE sales_db TO Bob;
GRANT SELECT ON sales_db.public.tickit_sales_redshift TO Bob;
```

授予資料庫或結構描述的存取權之後，使用者仍然需要獲得資料庫或結構描述中任何您要讓他們存取之物件的相關權限。

## 使用 WITH PERMISSIONS 進行精細共用
<a name="share-datashare-writes"></a>

您可以使用 WITH PERMISSIONS 進行精細共用，讓叢集或 Serverless 工作群組查詢資料共用。此程序假設資料共用源自您帳戶中的其他叢集或 Amazon Redshift Serverless 命名空間，或者來自另一個帳戶，且已與您正在使用的命名空間相關聯。

1. 取用者資料庫管理員可以從資料共用建立資料庫。

   ```
   CREATE DATABASE my_ds_db [WITH PERMISSIONS] FROM DATASHARE my_datashare OF NAMESPACE 'abc123def';
   ```

   如果您使用 WITH PERMISSIONS 建立資料庫，則可以對不同的使用者和角色授予資料共用物件的精細許可。如果沒有這個功能，所有被授予資料共用資料庫 USAGE 權限的使用者和角色，都會被授予資料共用資料庫內所有物件的所有權限。

1. 以下說明如何將權限授予 Redshift 資料庫使用者或角色。您必須連線到本機資料庫，才能執行這些陳述式。如果您在執行授予陳述式之前，在資料共用資料庫上執行 USE 命令，則無法執行這些陳述式。

   ```
   GRANT USAGE ON DATABASE my_ds_db TO ROLE data_eng;
   GRANT CREATE, USAGE ON SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng;
   GRANT ALL ON ALL TABLES IN SCHEMA my_ds_db.my_shared_schema TO ROLE data_eng;
    
   GRANT USAGE ON DATABASE my_ds_db TO bi_user;
   GRANT USAGE ON SCHEMA my_ds_db.my_shared_schema TO bi_user;
   GRANT SELECT ON my_ds_db.my_shared_schema.table1 TO bi_user;
   ```