本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Redshift 的基礎設施安全
作為受管服務,Amazon Redshift 受到 AWS 全球網路安全的保護。如需有關 AWS 安全服務以及如何 AWS 保護基礎設施的資訊,請參閱 AWS Cloud Security
您可以使用 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 和更新版本)大多會支援這些模式。
此外,必須使用與IAM委託人相關聯的存取金鑰 ID 和秘密存取金鑰來簽署請求。或者,您可以使用 AWS Security Token Service (AWS STS) 來產生暫時安全登入資料來簽署請求。
網路隔離
以 Amazon VPC服務為基礎的虛擬私有雲端 (VPC) 是您在 AWS Cloud 中以邏輯方式隔離的私有網路。您可以VPC執行下列步驟,在 內部署 Amazon Redshift 叢集或 Redshift Serverless 工作群組:
-
VPC 在 AWS 區域中建立 。如需詳細資訊,請參閱 Amazon 使用者指南中的什麼是 AmazonVPC?。 VPC
-
建立兩個或多個私有VPC子網路。如需詳細資訊,請參閱 Amazon 使用者指南中的 VPCs和 子網路。 VPC
-
部署 Amazon Redshift 叢集或 Redshift Serverless 工作群組。如需詳細資訊,請參閱 Redshift 資源的子網路 或 工作群組和命名空間。
依預設會在佈建時鎖定 Amazon Redshift 叢集。若要允許來自 Amazon Redshift 用戶端的傳入網路流量,請將VPC安全群組與 Amazon Redshift 叢集建立關聯。如需詳細資訊,請參閱Redshift 資源的子網路。
若要僅允許特定 IP 地址範圍的流量,請使用 更新安全群組VPC。一個例子是僅允許往返您的企業網路的流量。
設定與 Amazon Redshift 叢集標記的子網路相關聯的網路存取控制清單時,請確定將個別 AWS 區域的 S3 CIDR範圍新增至輸入和輸出規則的允許清單。這樣做可讓您執行以 S3-based操作,例如 Redshift SpectrumCOPY、 和 ,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 支援將叢集部署至專用租用 VPCs。如需詳細資訊,請參閱 Amazon 使用者指南中的專用執行個體。 EC2
Amazon Redshift 安全群組
當您佈建 Amazon Redshift 叢集時,依預設它會遭鎖定,以便沒有人可以存取它。若要授予其他使用者 Amazon Redshift 叢集的傳入存取,您可使叢集與安全群組建立關聯。如果您在 EC2VPC平台上,您可以使用現有的 Amazon VPC安全群組或定義新的安全群組,然後將其與叢集建立關聯。如需在 EC2平台上VPC管理叢集的詳細資訊,請參閱 中的 Redshift 資源 VPC。
界面 VPC 端點
您可以使用虛擬私有雲端 (AWS PrivateLink) 中的介面VPC端點 () 直接連線至 Amazon Redshift 和 Amazon Redshift Serverless API服務,VPC而不是透過網際網路連線。如需 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端點都由一個或多個彈性網路介面表示,VPC子網路中具有私有 IP 地址。如需彈性網路介面的詳細資訊,請參閱 Amazon 使用者指南中的彈性網路介面。 EC2
介面VPC端點會將您的 VPC直接連線至 Amazon Redshift。它不使用網際網路閘道、網路地址轉譯 (NAT) 裝置、虛擬私有網路 (VPN) 連線或 AWS Direct Connect 連線。您 中的執行個體VPC不需要公有 IP 地址即可與 Amazon Redshift 通訊API。
若要透過 使用 Amazon Redshift 或 Redshift ServerlessVPC,有兩個選項。其中一個是從 內部的執行個體連線VPC。另一個方法是VPC使用 AWS VPN 選項或 將私有網路連接至您的 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 Redshift 佈建:
https://redshift.
.amazonaws.comRegion
-
Amazon Redshift Serverless:
https://redshift-serverless.
.amazonaws.comRegion
如果您未啟用私有DNS主機名稱,Amazon VPC會提供DNS端點名稱,您可以使用下列格式。
-
Amazon Redshift 佈建:
VPC_endpoint_ID
.redshift.Region
.vpce.amazonaws.com -
Amazon Redshift Serverless:
VPC_endpoint_ID
.redshift-serverless.Region
.vpce.amazonaws.com
如需詳細資訊,請參閱 Amazon VPC使用者指南 中的介面VPC端點 (AWS PrivateLink)。
Amazon Redshift 和 Redshift Serverless 支援呼叫 內的所有 Amazon Redshift API操作和 Redshift Serverless API操作VPC。
您可以將VPC端點政策連接至VPC端點,以控制 (IAM) 主體的 AWS Identity and Access Management 存取。您也可以將安全群組與VPC端點建立關聯,以根據網路流量的來源和目的地來控制傳入和傳出存取。範例是 IP 地址範圍。如需詳細資訊,請參閱 Amazon VPC使用者指南 中的使用VPC端點控制對服務的存取。
VPC Amazon Redshift 的端點政策
您可以為 Amazon Redshift 的VPC端點建立政策,以指定下列項目:
-
可執行或不可執行動作的主體
-
可執行的動作
-
可在其中執行動作的資源
如需詳細資訊,請參閱 Amazon VPC使用者指南 中的使用VPC端點控制對 服務的存取。
接下來,您可以找到VPC端點政策的範例。
Amazon Redshift 佈建端點政策範例
接下來,您可以找到 Amazon Redshift 佈建的VPC端點政策範例。
範例:端點VPC政策拒絕來自指定 AWS 帳戶的所有存取
下列VPC端點政策會拒絕 AWS 帳戶使用此端點對資源
的所有存取。123456789012
{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "*", "Principal": { "AWS": [ "123456789012" ] } } ] }
範例:僅允許VPC存取指定IAM角色的VPC端點政策
下列VPC端點政策僅允許完整存取IAM角色
AWS 帳戶中 Redshiftrole
123456789012
。 所有其他IAM主體都會被拒絕使用端點存取。
{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "arn:aws:iam::123456789012:role/redshiftrole" ] } }] }
這只是範例。在大多數使用案例中,建議您附加特定動作的許可,以縮小許可範圍。
範例:VPC端點政策,僅允許VPC存取指定的IAM主體 (使用者)
下列VPC端點政策僅允許IAM使用者完整存取
AWS 帳戶中 redshiftadmin
123456789012
。 所有其他IAM主體都會被拒絕使用端點存取。
{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": { "AWS": [ "arn:aws:iam::123456789012:user/redshiftadmin" ] } }] }
這只是範例。在大多數使用案例中,建議您先附加許可給某個角色,再指派給使用者。此外,也建議您使用特定動作來縮小許可範圍。
範例:允許唯讀 Amazon Redshift 操作的VPC端點政策
下列VPC端點政策僅允許 AWS 帳戶
來執行指定的 Amazon Redshift 動作。123456789012
指定的動作會為 Amazon Redshift 提供等效的唯讀存取權。指定帳戶的 上的所有其他動作VPC都會遭到拒絕。此外,也會拒絕所有其他帳戶的任何存取。如需 Amazon Redshift 動作的清單,請參閱 使用者指南中的 Amazon Redshift 的動作、資源和條件金鑰。 IAM
{ "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端點政策拒絕存取指定的叢集
下列VPC端點政策允許所有帳戶和主體的完整存取。同時,它拒絕 AWS 帳戶的任何存取
在叢集 ID 為 的 Amazon Redshift 叢集上執行的動作123456789012
。仍然允許其他不支援叢集資源層級許可的 Amazon Redshift 動作。如需 Amazon Redshift 動作及其對應資源類型的清單,請參閱 使用者指南中的 Amazon Redshift 的動作、資源和條件金鑰。 IAM my-redshift-cluster
{ "Statement": [ { "Action": "*", "Effect": "Allow", "Resource": "*", "Principal": "*" }, { "Action": "*", "Effect": "Deny", "Resource": "arn:aws:redshift:us-east-1:123456789012:cluster:my-redshift-cluster", "Principal": { "AWS": [ "123456789012" ] } } ] }
Amazon Redshift Serverless Endpoint Policy 範例
接下來,您可以找到 Redshift Serverless 的VPC端點政策範例。
範例:允許唯讀 Redshift Serverless 操作的VPC端點政策
下列VPC端點政策僅允許 AWS 帳戶
執行指定的 Redshift Serverless 動作。123456789012
指定的動作提供相當於 Redshift Serverless 唯讀存取的同等功能。指定帳戶的 上的所有其他動作VPC都會遭到拒絕。此外,也會拒絕所有其他帳戶的任何存取。如需 Redshift Serverless 動作的清單,請參閱 使用者指南中的 Redshift Serverless 的動作、資源和條件金鑰。 IAM
{ "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端點政策拒絕存取指定的工作群組
下列VPC端點政策允許所有帳戶和主體的完整存取。同時,它拒絕 AWS 帳戶的任何存取
在 Amazon Redshift 工作群組上執行的 動作,其工作群組 ID 為 123456789012
。仍然允許不支援工作群組資源層級許可的其他 Amazon Redshift 動作。如需 Redshift Serverless 動作及其對應資源類型的清單,請參閱 使用者指南中的 Redshift Serverless 的動作、資源和條件金鑰。 IAM my-redshift-workgroup
{ "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" ] } } ] }