了解 Redshift 頻譜並存取 Amazon S3 儲存貯體 - Amazon Redshift

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

了解 Redshift 頻譜並存取 Amazon S3 儲存貯體

Amazon Redshift Spectrum 不支援使用佈建的叢集進行增強型VPC路由。Amazon Redshift 增強的VPC路由路由特定的流量通過您的VPC. 叢集和 Amazon S3 儲存貯體之間的所有流量都會強制通過 Amazon VPC。Redshift 頻譜在 Amazon Redshift 擁有的 AWS 受管資源上執行。因為這些資源不在您的外部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正確設定。如需詳細資訊使用增強型VPC路由功能,透過 Redshift 控制網路流量,請參閱建立VPC端點、NAT閘道和其他網路資源以將流量導向 Amazon S3 儲存貯體的詳細討論。

注意

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

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

以下是使用 Redshift Spectrum 時的考量:

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 毫秒。

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

{ "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 帳戶的內容和個別的角色權限執行這些操作。您可以在 AWS CloudTrail 和 Amazon S3 中使用伺服器存取日誌記錄,以記錄和稽核 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閘道 — 若要連接到另一個 AWS 區域的 Amazon S3 儲存貯體或 AWS 網路內的其他服務,請按照 Amazon VPC 使用者指南中所述設定網路地址轉譯 (NAT) 閘道。您也可以使用此組態來存取 AWS 網路外的主機執行個體。

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