Amazon Redshift 將不再支援在 2026 年 6 月 30 日之後使用 Python UDFs。我們將開始分階段強制執行。如需 Python 生命週期結束和遷移選項的詳細資訊,請參閱 2025 年 6 月 30 日發佈的部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
存取其他 AWS 資源的許可
若要在叢集與其他 AWS 資源之間移動資料,例如 Amazon S3、Amazon DynamoDB、Amazon EMR 或 Amazon EC2,您的叢集必須具有存取資源和執行必要動作的許可。例如,若要從 Amazon S3 載入資料,COPY 必須具備儲存貯體的 LIST 存取權和儲存貯體物件的 GET 存取權。如需最低許可的相關資訊,請參閱 COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 許可。
若要取得存取 資源的授權,您的叢集必須使用下列身分驗證方法進行身分驗證:
-
角色類型存取控制 – 對於角色型存取控制,您可以指定叢集用於身分驗證和授權的 AWS Identity and Access Management (IAM) 角色。為了保護您的 AWS 登入資料和敏感資料,我們強烈建議您使用角色型身分驗證。
角色類型存取控制
使用角色型存取控制時,叢集會暫時代表您擔任 IAM 角色。然後,根據角色獲予的授權,叢集即可存取所需的 AWS 資源。
建立 IAM 角色類似於授予許可給使用者,因為它是 AWS 身分,具有判定其在 AWS中可執行和不可執行的操作之許可政策。但是,角色可以由任何需要此角色的實體來擔任,而不必與一個使用者產生獨特的關聯。此外,角色沒有任何相關聯的登入資料 (密碼或存取金鑰)。反之,如果角色與叢集相關聯,則會動態建立存取金鑰並將該金鑰提供給叢集。
我們建議您使用角色型存取控制,因為它除了保護您的 AWS 登入資料之外,還提供更安全、更精細的 AWS 資源和敏感使用者資料的存取控制。
角色型身分驗證提供下列優點:
-
您可以使用 AWS 標準 IAM 工具來定義 IAM 角色,並將角色與多個叢集建立關聯。修改角色的存取政策時,會將變更自動套用至所有使用該角色的叢集。
-
您可以定義精細的 IAM 政策,授予特定叢集和資料庫使用者存取特定 AWS 資源和動作的許可。
-
您的叢集會在執行時間取得臨時工作階段登入資料,並視需要重新整理登入資料,直到操作完成。
-
不會在 SQL 程式碼中儲存或傳輸存取金鑰 ID 和私密存取金鑰。
若要使用角色型存取控制,您必須先使用 Amazon Redshift 服務角色類型建立 IAM 角色,再將該角色連接至叢集。角色至少必須具備 COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 許可中列出的許可。如需建立 IAM 角色並將其連接至叢集的步驟,請參閱《Amazon Redshift 管理指南》中的授權 Amazon Redshift 代表您存取 AWS 其他服務。
您可以使用 Amazon Redshift 管理主控台、CLI 或 API 將角色新增至叢集,或檢視與叢集相關聯的角色。如需詳細資訊,請參閱《Amazon Redshift 管理指南》中的將 IAM 角色與叢集建立關聯。
建立 IAM 角色時,IAM 會傳回角色的 Amazon Resource Name (ARN)。若要指定 IAM 角色,請使用 使用 IAM_ROLE 參數 參數來提供角色 ARN。
例如,假設下列角色已附加至叢集。
"IamRoleArn": "arn:aws:iam::0123456789012:role/MyRedshiftRole"
下列 COPY 命令範例使用 IAM_ROLE 參數,搭配上一個範例中的 ARN,以驗證身分並存取 Amazon S3。
copy customer from 's3://amzn-s3-demo-bucket/mydata' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole';
此外,超級使用者可以將 ASSUMEROLE 權限授與資料庫使用者和群組,以提供 COPY 操作角色的存取權。如需相關資訊,請參閱GRANT。
暫時安全憑證
當您使用角色型存取控制時,Amazon Redshift 會自動代表您使用臨時安全登入資料。暫時安全憑證提供加強的安全性,因為有效期限較短,且過期之後不能重複使用。
當您授權使用 IAM 角色時,您的叢集會暫時擔任該角色,並在執行時間取得臨時工作階段登入資料。您的叢集會視需要重新整理這些登入資料,直到操作完成為止,因此您不需要自行提供或管理這些登入資料。如需詳細資訊,請參閱角色類型存取控制。
COPY、UNLOAD 和 CREATE LIBRARY 的 IAM 許可
IAM_ROLE 參數參考的 IAM 角色必須至少具有下列許可:
-
從 Amazon S3 COPY 時,具備許可來 LIST Amazon S3 儲存貯體及 GET 要載入的 Amazon S3 物件和資訊清單檔案 (如果使用)。
-
從 Amazon S3、Amazon EMR 和遠端主機 (SSH) COPY JSON 格式的資料時,具備許可來 LIST 和 GET Amazon S3 上的 JSONPaths 檔案 (如果使用)。
-
從 DynamoDB COPY 時,具備許可來 SCAN 和 DESCRIBE 要載入的 DynamoDB 資料表。
-
從 Amazon EMR 叢集 COPY 時,具備許可在 Amazon EMR 叢集上執行
ListInstances動作。 -
UNLOAD 到 Amazon S3 時,對於 Amazon S3 儲存貯體 (要將資料檔案卸載到此處),具備 GET、LIST 和 PUT 許可。
-
從 Amazon S3 CREATE LIBRARY 時,具備許可來 LIST Amazon S3 儲存貯體及 GET 要匯入的 Amazon S3 物件。
注意
執行 COPY、UNLOAD 或 CREATE LIBRARY 命令時,如果出現錯誤訊息 S3ServiceException: Access
Denied,表示叢集沒有 Amazon S3 的適當存取許可。
您可以將 IAM 政策附加至 IAM 角色,而該角色附加至叢集、使用者或使用者所屬的群組,以此來管理 IAM 許可。例如,AmazonS3ReadOnlyAccess 受管政策授予 Amazon S3 資源的 LIST 和 GET 許可。如需管理政策的相關資訊,請參閱《IAM 使用者指南》中的管理 IAM 政策。