Redshift Spectrum 和增強型 VPC 路由 - Amazon Redshift

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

Redshift Spectrum 和增強型 VPC 路由

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

Redshift 頻譜和 Amazon S3 之間的流量會透過虛擬 AWS 私人網路安全地路由到 VPC 之外。傳輸中的流量是使用 Amazon Signature 第 4 版通訊協定 (SIGv4) 來簽署,並使用 HTTPS 來加密。此流量是根據連接到 Amazon Redshift 叢集的 IAM 角色而獲得授權。若要進一步管理 Redshift Spectrum 流量,您可以修改叢集的 IAM 角色和已連接到 Amazon S3 儲存貯體的政策。您可能還需要將 VPC 設定為允許叢集存取 AWS Glue 或 Athena,如下所述。

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

注意

Amazon Redshift Serverless 支援將增強型 VPC 路由用於 Amazon S3 上外部資料表的查詢。

使用 Amazon Redshift Spectrum 時的考量

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

儲存貯體存取政策

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

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

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

若要使用 Redshift Spectrum,則不能有任何會阻止使用預先簽章的 URL 的 IAM 政策。

下列範例值區政策只允許從 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:::examplebucket/*"], "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:::myBucket/*", "Condition": {"StringEquals": {"aws:UserAgent": "AWS Redshift/Spectrum"}} }] }

如需詳細資訊,請參閱《Amazon Redshift 資料庫開發人員指南》中的 Redshift Spectrum 的 IAM 政策

記錄和稽核 Amazon S3 存取

使用 Amazon Redshift 增強型 VPC 路由的一項好處是所有 COPY 和 UNLOAD 流量都記錄在 VPC 流程日誌中。源自 Redshift Spectrum 到 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 的存取,請使用網際網路閘道或 NAT 閘道來設定您的 VPC。設定您的 VPC 安全群組,以允許 AWS Glue 和 Athena 的公用端點輸出流量。或者,您也可以設定介面 VPC 端點 AWS Glue 以存 AWS Glue Data Catalog取. 當您使用 VPC 介面端點時,VPC 之間的通訊會 AWS Glue 在網路內進行。 AWS 如需詳細資訊,請參閱建立界面端點

您可以在 VPC 中設定下列路徑:

  • 網際網路閘道 — 若要連接到 VPC 外部的 AWS 服務,您可以將網際網路閘道連接到 VPC 子網路,如 Amazon V PC 使用者指南中所述。若要使用網際網路閘道,您的叢集必須有公有 IP 地址,以便讓其他服務與您的叢集進行通訊。

  • NAT 閘道 — 若要連線到另一個 AWS 區域的 Amazon S3 儲存貯體或 AWS 網路內的其他服務,請按照 Amazon VPC 使用者指南中所述設定網路位址轉譯 (NAT) 閘道。您也可以使用此組態來存取 AWS 網路外的主機執行個體。

如需更多詳細資訊,請參閱 Amazon Redshift 中的增強型 VPC 路由