Amazon Redshift 的基礎設施安全 - Amazon Redshift

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

Amazon Redshift 的基礎設施安全

身為受管服務,Amazon Redshift 受到 AWS 全球網路安全的保護。如需 AWS 安全服務以及如何 AWS 保護基礎設施的相關資訊,請參閱AWS 雲端安全。若要使用基礎設施安全的最佳實務設計您的 AWS 環境,請參閱 Security Pillar AWS Well-Architected Framework 中的基礎設施保護

您可以使用 AWS 已發佈的 API 呼叫,透過網路存取 Amazon Redshift。使用者端必須支援下列專案:

  • Transport Layer Security (TLS)。我們需要 TLS 1.2 並建議使用 TLS 1.3。

  • 具備完美轉送私密(PFS)的密碼套件,例如 DHE (Ephemeral Diffie-Hellman)或 ECDHE (Elliptic Curve Ephemeral Diffie-Hellman)。現代系統(如 Java 7 和更新版本)大多會支援這些模式。

此外,請求必須使用存取金鑰 ID 和與 IAM 主體相關聯的私密存取金鑰來簽署。或者,您可以透過 AWS Security Token Service (AWS STS) 來產生暫時安全憑證來簽署請求。

網路隔離

以 Amazon VPC 服務為基礎的虛擬私有雲端 (VPC) 是您在 AWS 雲端中以邏輯方式隔離的私有網路。您可以執行下列步驟,在 VPC 中部署 Amazon Redshift 叢集或 Redshift Serverless 工作群組:

依預設會在佈建時鎖定 Amazon Redshift 叢集。若要允許來自 Amazon Redshift 用戶端的傳入網路流量,請將 VPC 安全群組與 Amazon Redshift 叢集相關聯。如需詳細資訊,請參閱Redshift 資源的子網路

若要僅允許往返特定 IP 位址範圍的流量,請更新您的 VPC 的安全群組。一個例子是僅允許往返您的企業網路的流量。

設定與 Amazon Redshift 叢集加上標籤之子網路相關聯的網路存取控制清單時,請確定將個別 AWS 區域的 S3 CIDR 範圍新增至輸入和輸出規則的允許清單。這樣做可讓您執行以 S3 為基礎的操作,例如 Redshift Spectrum、COPY 和 UNLOAD,而不會造成中斷。

以下範例命令會在 us-east-1 區域中剖析 Amazon S3 所使用的所有 IPv4 地址的 JSON 回應。

curl https://ip-ranges.amazonaws.com/ip-ranges.json | jq -r '.prefixes[] | select(.region=="us-east-1") | select(.service=="S3") | .ip_prefix' 54.231.0.0/17 52.92.16.0/20 52.216.0.0/15

如需如何取得特定區域之 S3 IP 範圍的指示,請參閱 AWS IP 地址範圍

Amazon Redshift 支援將叢集部署至專用租用 VPC。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的專用預留執行個體

Amazon Redshift 安全群組

當您佈建 Amazon Redshift 叢集時,依預設它會遭鎖定,以便沒有人可以存取它。若要授予其他使用者 Amazon Redshift 叢集的傳入存取,您可使叢集與安全群組建立關聯。如果您是在 EC2-VPC 平台上,則可以使用現有的 Amazon VPC 安全群組,或定義新的安全群組,然後使它與叢集建立關聯。如需在 EC2-VPC 平台上管理叢集的相關資訊,請參閱VPC 中的 Redshift 資源

您可以使用虛擬私有雲端 (VPC AWS PrivateLink) 中的介面 VPC 端點 () 直接連線至 Amazon Redshift 和 Amazon Redshift Serverless API 服務,而不是透過網際網路連線。如需 Amazon Redshift API 動作的相關資訊,請參閱《Amazon Redshift API 參考》中的動作。如需 Redshift Serverless API 動作的相關資訊,請參閱《Amazon Redshift Serverless API 參考》中的動作。如需 AWS PrivateLink的相關資訊,請參閱《Amazon VPC 使用者指南》中的界面 VPC 端點 (AWS PrivateLink)。請注意,叢集或工作區的 JDBC/ODBC 連線不屬於 Amazon Redshift API 服務。

當您使用界面 VPC 端點時,VPC 與 Amazon Redshift 或 Redshift Serverless 之間的通訊完全在 AWS 網路中執行,這可提供更高的安全性。每個 VPC 端點皆會由一個或多個具私有 IP 地址彈性網路界面來表示,而該界面位於 VPC 子網路中。如需彈性網路界面的詳細資訊,請參閱 Amazon EC2 使用者指南中的彈性網路界面

界面 VPC 端點會將 VPC 直接連線到 Amazon Redshift。它不使用網際網路閘道、網路地址轉譯 (NAT) 裝置、虛擬私有網路 (VPN) 連線或 AWS Direct Connect 連線。VPC 中的執行個體不需要公有 IP 地址,就能與 Amazon Redshift API 進行通訊。

若要透過 VPC 使用 Amazon Redshift 或 Redshift Serverless,您有兩個選項。一個是從 VPC 內部的執行個體進行連線。另一個方法是使用 AWS VPN 選項 或 將私有網路連接到 VPC AWS Direct Connect。如需 AWS VPN 選項的詳細資訊,請參閱《Amazon VPC 使用者指南》中的 VPN 連線。如需有關 AWS Direct Connect的資訊,請參閱《AWS Direct Connect 使用者指南》中的建立連線

您可以使用 AWS Management Console 或 AWS Command Line Interface (AWS CLI) 命令,建立介面 VPC 端點以連線至 Amazon Redshift。如需詳細資訊,請參閱建立界面端點

在您建立界面 VPC 端點後,您可以為該端點啟用私有 DNS 主機名稱。當您執行此作業時,預設端點如下所示:

  • 已佈建 Amazon Redshifthttps://redshift.Region.amazonaws.com

  • Amazon Redshift Serverlesshttps://redshift-serverless.Region.amazonaws.com

如果您未啟用私有 DNS 主機名稱,Amazon VPC 會透過下列格式提供 DNS 端點名稱供您使用。

  • 已佈建 Amazon RedshiftVPC_endpoint_ID.redshift.Region.vpce.amazonaws.com

  • Amazon Redshift ServerlessVPC_endpoint_ID.redshift-serverless.Region.vpce.amazonaws.com

如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的介面 VPC 端點 (AWS PrivateLink)

Amazon Redshift 和 Redshift Serverless 支援呼叫 VPC 內的所有 Amazon Redshift API 操作Redshift Serverless API 操作

可以將 VPC 端點政策附接至某個 VPC 端點,以控制 AWS Identity and Access Management (IAM) 主體的存取權。您也可以將安全群組與 VPC 端點建立關聯,以根據網路流量的來源和目的地來控制傳入和傳出存取。範例是 IP 地址範圍。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的使用 VPC 端點控制服務的存取

您可以為 Amazon Redshift 的 VPC 端點建立政策,以指定下列各項:

  • 可執行或不可執行動作的主體

  • 可執行的動作

  • 可在其中執行動作的資源

如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的使用 VPC 端點控制對服務的存取

接下來,您可以找到 VPC 端點政策的範例。

您可以在下面找到 Amazon Redshift 佈建的 VPC 端點政策範例。

下列 VPC 端點政策會拒絕 AWS 帳戶使用此端點存取資源123456789012

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "*", "Principal": { "AWS": [ "123456789012" ] } } ] }

下列 VPC 端點政策僅允許完整存取 AWS 帳戶 123456789012 redshiftrole中的 IAM 角色。所有其他 IAM 主體均無法存取該端點。

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/redshiftrole" ] } }] }

這只是範例。在大多數使用案例中,建議您附加特定動作的許可,以縮小許可範圍。

下列 VPC 端點政策僅允許 AWS 帳戶 123456789012 redshiftadmin中的 IAM 使用者完整存取。所有其他 IAM 主體均無法存取該端點。

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/redshiftadmin" ] } }] }

這只是範例。在大多數使用案例中,建議您先附加許可給某個角色,再指派給使用者。此外,也建議您使用特定動作來縮小許可範圍。

下列 VPC 端點政策僅允許 AWS 帳戶123456789012執行指定的 Amazon Redshift 動作。

指定的動作會為 Amazon Redshift 提供等效的唯讀存取權。拒絕指定的帳戶存取在該 VPC 上的所有其他動作。此外,也會拒絕所有其他帳戶的任何存取。如需 Amazon Redshift 動作的清單,請參閱《IAM 使用者指南》中的 Amazon Redshift 的動作、資源和條件金鑰

{ "Statement": [ { "Action": [ "redshift:DescribeAccountAttributes", "redshift:DescribeClusterParameterGroups", "redshift:DescribeClusterParameters", "redshift:DescribeClusterSecurityGroups", "redshift:DescribeClusterSnapshots", "redshift:DescribeClusterSubnetGroups", "redshift:DescribeClusterVersions", "redshift:DescribeDefaultClusterParameters", "redshift:DescribeEventCategories", "redshift:DescribeEventSubscriptions", "redshift:DescribeHsmClientCertificates", "redshift:DescribeHsmConfigurations", "redshift:DescribeLoggingStatus", "redshift:DescribeOrderableClusterOptions", "redshift:DescribeQuery", "redshift:DescribeReservedNodeOfferings", "redshift:DescribeReservedNodes", "redshift:DescribeResize", "redshift:DescribeSavedQueries", "redshift:DescribeScheduledActions", "redshift:DescribeSnapshotCopyGrants", "redshift:DescribeSnapshotSchedules", "redshift:DescribeStorage", "redshift:DescribeTable", "redshift:DescribeTableRestoreStatus", "redshift:DescribeTags", "redshift:FetchResults", "redshift:GetReservedNodeExchangeOfferings" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "123456789012" ] } } ] }

下列 VPC 端點政策會允許所有帳戶和主體擁有完整存取權。同時,它拒絕 AWS 帳戶123456789012對叢集 ID 為 的 Amazon Redshift 叢集上執行動作的任何存取my-redshift-cluster。仍然允許其他不支援叢集資源層級許可的 Amazon Redshift 動作。如需 Amazon Redshift 動作及其對應資源類型的清單,請參閱《IAM 使用者指南》中的 Amazon Redshift 的動作、資源和條件金鑰

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "arn:aws:redshift:us-east-1:123456789012:cluster:my-redshift-cluster", "Principal": { "AWS": [ "123456789012" ] } } ] }

您可以在下面找到 Redshift Serverless 的 VPC 端點政策範例。

下列 VPC 端點政策僅允許 AWS 帳戶123456789012執行指定的 Redshift Serverless 動作。

指定的動作提供相當於 Redshift Serverless 唯讀存取。拒絕指定的帳戶存取在該 VPC 上的所有其他動作。此外,也會拒絕所有其他帳戶的任何存取。如需 Redshift Serverless 動作的清單,請參閱《IAM 使用者指南》中的 Redshift Serverless 的動作、資源和條件金鑰

{ "Statement": [ { "Action": [ "redshift-serverless:DescribeOneTimeCredit", "redshift-serverless:GetCustomDomainAssociation", "redshift-serverless:GetEndpointAccess", "redshift-serverless:GetNamespace", "redshift-serverless:GetRecoveryPoint", "redshift-serverless:GetResourcePolicy", "redshift-serverless:GetScheduledAction", "redshift-serverless:GetSnapshot", "redshift-serverless:GetTableRestoreStatus", "redshift-serverless:GetUsageLimit", "redshift-serverless:GetWorkgroup" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "123456789012" ] } } ] }

下列 VPC 端點政策會允許所有帳戶和主體擁有完整存取權。同時,它會拒絕 AWS 帳戶123456789012對工作群組 ID 為 的 Amazon Redshift 工作群組上執行動作的任何存取my-redshift-workgroup。仍然允許不支援工作群組資源層級許可的其他 Amazon Redshift 動作。如需 Redshift Serverless 動作及其對應資源類型的清單,請參閱《IAM 使用者指南》中的 Redshift Serverless 的動作、資源和條件金鑰

{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "arn:aws:redshift-serverless:us-east-1:123456789012:workgroup:my-redshift-workgroup", "Principal": { "AWS": [ "123456789012" ] } } ] }