使用 Redshift 頻譜存取 Amazon S3 儲存貯體 - Amazon Redshift

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

使用 Redshift 頻譜存取 Amazon S3 儲存貯體

Amazon Redshift Spectrum 不支援使用佈建的叢集進行增強型VPC路由。Amazon Redshift 增強的VPC路由路由特定的流量通過您的VPC. 叢集和 Amazon S3 儲存貯體之間的所有流量都會強制通過 Amazon VPC。Redshift 頻譜上運行 AWS Amazon Redshift 擁有的受管資源。因為這些資源不在您的外部VPC,Redshift 頻譜不會使用增強型VPC路由。

Redshift 頻譜和 Amazon S3 之間的流量會透過 AWS 私人網路,在您的VPC. 傳輸中的流量使用 Amazon 簽名版本 4 通訊協定 (SIGv4) 簽署,並使用HTTPS加密。此流量會根據附加到 Amazon Redshift 叢集的IAM角色進行授權。若要進一步管理 Redshift 頻譜流量,您可以修改叢集的IAM角色以及連接到 Amazon S3 儲存貯體的政策。您可能還需要配置您的,VPC以允許您的叢集存取 AWS Glue 或 Athena, 詳細如下.

請注意,由於增強型VPC路由會影響 Amazon Redshift 存取其他資源的方式,所以查詢可能會失敗,除非您VPC正確設定。如需詳細資訊使用 Redshift 增強型VPC路由控制網路流量,請參閱建立VPC端點、NAT閘道和其他網路資源以將流量導向 Amazon S3 儲存貯體的詳細討論。

注意

Amazon Redshift 無伺服器支援增強型VPC路由功能,以便查詢到 Amazon S3 上的外部表格。如需有關組態的詳細資訊,請參閱 Amazon Redshift 無伺服器入門指南中的從 Amazon S3 載入資料

使用 Amazon Redshift Spectrum 時的許可政策配置

使用 Redshift 光譜時,請考慮下列事項:

Amazon S3 儲存貯體存取政策和IAM角色

您可以使用連接到儲存貯體的儲存貯體政策,並使用連接到佈建叢集的IAM角色,來控制對 Amazon S3 儲存貯體中資料的存取。

佈建叢集上的 Redshift Spectrum 無法存取存放在 Amazon S3 儲存貯體中的資料,這些資料使用儲存貯體政策限制只能存取指定VPC的端點。請改用儲存貯體政策來限制只存取特定主體,例如特定主體 AWS 帳戶或特定用戶。

對於被授與儲存貯體存取權的IAM角色,請使用信任關係,該關係只允許 Amazon Redshift 服務主體承擔該角色。連接到叢集時,該角色只能用於 Amazon Redshift 的內容中,不能在叢集外共用。如需詳細資訊,請參閱限制對IAM角色的存取。服務控制策略 (SCP) 也可用於進一步限制角色,請參閱防止使用IAM者和角色進行指定的變更,但 AWS Organizations 用戶指南

注意

若要使用 Redshift 頻譜,IAM則無法制定任何政策阻止使用 Amazon S3 預先簽署URLs。Amazon Redshift Spectrum 預先簽署URLs的有效期為 1 小時,因此亞馬遜 Redshift 有足夠的時間從 Amazon S3 存儲桶加載所有文件。Redshift 頻譜掃描的每個檔案都會產生一個唯一的預先簽署URL。對於包含s3:signatureAge動作的值區政策,請務必將值設定為至少 3,600,000 毫秒。

下列範例值區政策僅允許從 Redshift Spectrum 所擁有的流量存取指定值區 AWS 帳戶123456789012

{ "Version": "2012-10-17", "Statement": [{ "Sid": "BucketPolicyForSpectrum", "Effect": "Allow", "Principal": { "AWS": ["arn:aws:iam::123456789012:role/redshift"] }, "Action": ["s3:GetObject", "s3:List*"], "Resource": ["arn:aws:s3:::amzn-s3-demo-bucket/*"], "Condition": { "StringEquals": { "aws:UserAgent": "AWS Redshift/Spectrum" } } }] }

假設IAM角色的權限

連接到叢集的角色應該具有只允許 Amazon Redshift 服務擔任該角色的信任關係,如下所示。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

您可以將政策新增至叢集角色,以防止COPY和UNLOAD存取特定值區。以下政策僅允許來自 Redshift Spectrum 的流量才能流向指定的儲存貯體。

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:Get*", "s3:List*"], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*", "Condition": {"StringEquals": {"aws:UserAgent": "AWS Redshift/Spectrum"}} }] }

如需詳細資訊,請參閱 Amazon Redshift 資料庫開發人員指南中的紅移頻譜IAM政策

記錄和稽核 Amazon S3 存取

使用 Amazon Redshift 增強型VPC路由的一個好處是,所有流UNLOAD量COPY和流量都記錄在VPC流程日誌中。源自 Redshift 頻譜到 Amazon S3 的流量不會通過您的流量VPC,因此它不會記錄在VPC流程日誌中。當 Redshift 頻譜存取 Amazon S3 中的資料時,會在 AWS 帳戶和相應的角色權限。您可以使用伺服器存取日誌記錄和稽核 Amazon S3 存取 AWS CloudTrail 和 Amazon S3。

確定 S3 IP 範圍已新增至您的允許清單。若要進一步了解所需的 S3 IP 範圍,請參閱網路隔離

AWS CloudTrail 日誌

若要追蹤 Amazon S3 中物件的所有存取權限 (包括 Redshift 頻譜存取),請啟用 Amazon S3 物件的 CloudTrail 記錄功能。

您可以用 CloudTrail 來檢視、搜尋、下載、封存、分析和回應您的帳戶活動 AWS 基礎設施。如需詳細資訊,請參閱入門 CloudTrail

依預設,只會 CloudTrail 追蹤值區層級的動作。若要追蹤物件層級的動作 (例如 GetObject),請對每一個已記錄的儲存貯體啟用資料和管理事件。

Amazon S3 伺服器存取記錄

伺服器存取記錄日誌,應儲存貯體要求,提出的詳細記錄。存取記錄資訊在安全與存取稽核中相當實用。如需詳細資訊,請參閱《Amazon Simple Storage Service 使用者指南》中的如何啟用伺服器存取記錄

如需詳細資訊,請參閱 AWS 安全部落格文章如何使用儲存貯體政策並套用深度防禦來協助保護 Amazon S3 資料的安全

訪問 AWS Glue 或 Amazon Athena

Redshift 頻譜訪問您的數據目錄 AWS Glue 或 Athena。另一個選項是使用專用的 Hive 中繼存放區來處理資料目錄。

啟用存取 AWS Glue 或 Athena,VPC使用網際網路閘道或NAT閘道進行設定。設定您的VPC安全群組,以允許輸出流量傳送至公用端點 AWS Glue 和 Athena。或者,您可以為下列項目設定介面VPC端點 AWS Glue 訪問您的 AWS Glue Data Catalog。 當您使用VPC介面端點時,VPC與之間的通訊 AWS Glue 是在 AWS 網絡。如需詳細資訊,請參閱建立界面端點

您可以在以下位置配置以下路徑:VPC

  • 網際網路閘道 — 連線至 AWS 您VPC可以將網際網路閘道附加到子網VPC路以外的服務,如 Amazon VPC 使用者指南中所述。若要使用網際網路閘道,佈建的叢集必須具有公用 IP 位址,才能允許其他服務與其通訊。

  • NAT閘道 — 連接到另一個儲存貯體中的 Amazon S3 儲存貯體 AWS 區域或其他服務 AWS 網路,設定網路位址轉譯 (NAT) 閘道,如 Amazon VPC 使用者指南所述。也可以使用此組態存取 AWS 網絡。

如需詳細資訊,請參閱使用 Redshift 增強型VPC路由控制網路流量