Trang này cho bạn biết cách sử dụng các quy tắc ràng buộc tuỳ chỉnh của Dịch vụ chính sách của tổ chức để hạn chế các thao tác cụ thể trên các tài nguyên Google Cloud sau:
dns.googleapis.com/ManagedZone
dns.googleapis.com/Policy
dns.googleapis.com/ResponsePolicy
dns.googleapis.com/ResponsePolicyRule
Để tìm hiểu thêm về Chính sách của tổ chức, hãy xem bài viết Chính sách tuỳ chỉnh của tổ chức.
Giới thiệu về các chính sách và quy tắc ràng buộc của tổ chức
Google Cloud Dịch vụ chính sách tổ chức cho phép bạn kiểm soát tập trung và có lập trình đối với các tài nguyên của tổ chức. Là quản trị viên chính sách tổ chức, bạn có thể xác định chính sách tổ chức. Đây là một tập hợp các quy định hạn chế được gọi là quy tắc ràng buộc áp dụng cho tài nguyênGoogle Cloud và các tài nguyên con của tài nguyên đó trong hệ phân cấp tài nguyên Google Cloud . Bạn có thể thực thi chính sách của tổ chức ở cấp tổ chức, thư mục hoặc dự án.
Chính sách tổ chức cung cấp các quy tắc ràng buộc được quản lý tích hợp sẵn cho nhiều dịch vụ Google Cloud . Tuy nhiên, nếu muốn có quyền kiểm soát chi tiết hơn, có thể tuỳ chỉnh đối với các trường cụ thể bị hạn chế trong chính sách của tổ chức, bạn cũng có thể tạo các quy tắc ràng buộc tuỳ chỉnh và sử dụng các quy tắc ràng buộc tuỳ chỉnh đó trong chính sách của tổ chức.
Kế thừa chính sách
Theo mặc định, các chính sách của tổ chức sẽ được kế thừa bởi các phần tử con của tài nguyên mà bạn thực thi chính sách. Ví dụ: nếu bạn thực thi một chính sách trên một thư mục, thì Google Cloud sẽ thực thi chính sách đó trên tất cả dự án trong thư mục. Để tìm hiểu thêm về hành vi này và cách thay đổi hành vi này, hãy tham khảo nội dung Quy tắc đánh giá hệ phân cấp.
Lợi ích
Bạn có thể sử dụng chính sách tuỳ chỉnh của tổ chức để cho phép hoặc từ chối các giá trị cụ thể cho tài nguyên Cloud DNS. Ví dụ: nếu yêu cầu tạo hoặc cập nhật một thực thể Cloud DNS không đáp ứng quy trình xác thực quy tắc ràng buộc tuỳ chỉnh do chính sách của tổ chức đặt ra, thì yêu cầu sẽ không thành công và lỗi sẽ được trả về cho phương thức gọi.
Hạn chế
Giống như mọi quy tắc ràng buộc về chính sách của tổ chức, các thay đổi về chính sách sẽ không áp dụng hồi tố cho các thực thể hiện có.
- Chính sách mới không ảnh hưởng đến cấu hình thực thể hiện có.
- Cấu hình thực thể hiện có vẫn hợp lệ, trừ trường hợp bạn thay đổi cấu hình đó từ giá trị tuân thủ thành không tuân thủ bằng cách sử dụng bảng điều khiểnGoogle Cloud , Google Cloud CLI hoặc RPC.
Trước khi bạn bắt đầu
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Install the Google Cloud CLI.
-
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- Đảm bảo bạn biết mã tổ chức của mình.
ORGANIZATION_ID
: mã nhận dạng tổ chức của bạn, chẳng hạn như123456789
.CONSTRAINT_NAME
: tên bạn muốn đặt cho quy tắc ràng buộc tuỳ chỉnh mới. Quy tắc ràng buộc tuỳ chỉnh phải bắt đầu bằngcustom.
và chỉ có thể chứa chữ cái viết hoa, chữ cái viết thường hoặc số. Ví dụ:custom.restrictManagedZoneWithDeniedDescription
. Độ dài tối đa của trường này là 70 ký tự.RESOURCE_NAME
: tên đủ điều kiện của tài nguyênGoogle Cloud chứa đối tượng và trường mà bạn muốn hạn chế. Ví dụ:dns.googleapis.com/ManagedZone
.CONDITION
: Điều kiện CEL được viết dựa trên nội dung đại diện cho tài nguyên dịch vụ được hỗ trợ. Trường này có độ dài tối đa là 1.000 ký tự. Hãy xem phần Tài nguyên được hỗ trợ để biết thêm thông tin về các tài nguyên có sẵn để viết điều kiện. Ví dụ:resource.description.contains('denied')
.ACTION
: hành động cần thực hiện nếucondition
được đáp ứng. Các giá trị có thể sử dụng làALLOW
vàDENY
.DISPLAY_NAME
: tên dễ đọc cho quy tắc ràng buộc. Trường này có độ dài tối đa là 200 ký tự.DESCRIPTION
: nội dung mô tả dễ hiểu về quy tắc ràng buộc để hiển thị dưới dạng thông báo lỗi khi chính sách bị vi phạm. Trường này có độ dài tối đa là 2000 ký tự.- Trong bảng điều khiển Google Cloud , hãy chuyển đến trang Chính sách của tổ chức.
- Trong bộ chọn dự án, hãy chọn dự án mà bạn muốn đặt chính sách tổ chức.
- Trong danh sách trên trang Chính sách của tổ chức, hãy chọn quy tắc ràng buộc để xem trang Chi tiết chính sách cho quy tắc ràng buộc đó.
- Để định cấu hình chính sách của tổ chức cho tài nguyên này, hãy nhấp vào Quản lý chính sách.
- Trên trang Chỉnh sửa chính sách, hãy chọn Ghi đè chính sách của cha mẹ.
- Nhấp vào Thêm quy tắc.
- Trong phần Thực thi, hãy chọn bật hoặc tắt chế độ thực thi chính sách của tổ chức này.
- Không bắt buộc: Để đặt điều kiện cho chính sách của tổ chức dựa trên một thẻ, hãy nhấp vào Thêm điều kiện. Xin lưu ý rằng nếu thêm một quy tắc có điều kiện vào chính sách của tổ chức, bạn phải thêm ít nhất một quy tắc vô điều kiện thì mới có thể lưu chính sách. Để biết thêm thông tin, hãy xem phần Đặt chính sách của tổ chức bằng thẻ.
- Nhấp vào Kiểm thử nội dung thay đổi để mô phỏng hiệu quả của chính sách của tổ chức. Bạn không thể mô phỏng chính sách cho các quy tắc ràng buộc được quản lý cũ. Để biết thêm thông tin, hãy xem bài viết Kiểm thử các thay đổi về chính sách đối với tổ chức bằng Trình mô phỏng chính sách.
- Để hoàn tất và áp dụng chính sách của tổ chức, hãy nhấp vào Đặt chính sách. Chính sách này có thể mất đến 15 phút thì mới có hiệu lực.
-
PROJECT_ID
: dự án mà bạn muốn thực thi quy tắc ràng buộc. -
CONSTRAINT_NAME
: tên bạn đã xác định cho quy tắc ràng buộc tuỳ chỉnh. Ví dụ:custom.restrictManagedZoneWithDeniedDescription
. - Tìm hiểu thêm về Dịch vụ chính sách của tổ chức.
- Tìm hiểu thêm về cách tạo và quản lý chính sách của tổ chức.
- Xem danh sách đầy đủ các quy tắc ràng buộc về chính sách của tổ chức được quản lý.
Vai trò bắt buộc
Để có các quyền cần thiết để quản lý chính sách tuỳ chỉnh của tổ chức, hãy yêu cầu quản trị viên cấp cho bạn vai trò IAM Quản trị viên chính sách tổ chức (roles/orgpolicy.policyAdmin
) trên tài nguyên của tổ chức.
Để biết thêm thông tin về cách cấp vai trò, hãy xem bài viết Quản lý quyền truy cập vào dự án, thư mục và tổ chức.
Bạn cũng có thể nhận được các quyền cần thiết thông qua vai trò tuỳ chỉnh hoặc các vai trò được xác định trước khác.
Tạo quy tắc ràng buộc tuỳ chỉnh
Quy tắc ràng buộc tuỳ chỉnh được xác định trong tệp YAML theo các tài nguyên, phương thức, điều kiện và hành động mà dịch vụ mà bạn đang thực thi chính sách của tổ chức hỗ trợ. Các điều kiện cho các quy tắc ràng buộc tuỳ chỉnh được xác định bằng cách sử dụng Ngôn ngữ biểu thức thông thường (CEL). Để biết thêm thông tin về cách tạo điều kiện trong các quy tắc ràng buộc tuỳ chỉnh bằng CEL, hãy xem phần CEL trong bài viết Tạo và quản lý các quy tắc ràng buộc tuỳ chỉnh.
Để tạo quy tắc ràng buộc tuỳ chỉnh, hãy tạo tệp YAML theo định dạng sau:
name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- RESOURCE_NAME
methodTypes:
- CREATE
- UPDATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION
Thay thế nội dung sau:
Để biết thêm thông tin về cách tạo quy tắc ràng buộc tuỳ chỉnh, hãy xem phần Xác định quy tắc ràng buộc tuỳ chỉnh.
Thiết lập quy tắc ràng buộc tuỳ chỉnh
Sau khi tạo tệp YAML cho một quy tắc ràng buộc tuỳ chỉnh mới, bạn phải thiết lập tệp đó để sử dụng cho các chính sách của tổ chức trong tổ chức của bạn. Để thiết lập một quy tắc ràng buộc tuỳ chỉnh, hãy sử dụng lệnhgcloud org-policies set-custom-constraint
:
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH
bằng đường dẫn đầy đủ đến
tệp quy tắc ràng buộc tuỳ chỉnh. Ví dụ: /home/user/customconstraint.yaml
.
Sau khi hoàn tất, các quy tắc ràng buộc tuỳ chỉnh sẽ có sẵn dưới dạng chính sách của tổ chức trong danh sách Google Cloud chính sách của tổ chức.
Để xác minh rằng quy tắc ràng buộc tuỳ chỉnh tồn tại, hãy sử dụng lệnh gcloud org-policies list-custom-constraints
:
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID
bằng mã nhận dạng của tài nguyên tổ chức.
Để biết thêm thông tin, hãy xem bài viết Xem chính sách của tổ chức.
Thực thi chính sách tuỳ chỉnh của tổ chức
Bạn có thể thực thi một quy tắc ràng buộc bằng cách tạo một chính sách tổ chức tham chiếu đến quy tắc đó, sau đó áp dụng chính sách tổ chức đó cho một tài nguyên Google Cloud .Bảng điều khiển
gcloud
Để tạo chính sách tổ chức có quy tắc boolean, hãy tạo tệp YAML chính sách tham chiếu đến quy tắc ràng buộc:
name: projects/PROJECT_ID/policies/CONSTRAINT_NAME spec: rules: - enforce: true
Thay thế nội dung sau:
Để thực thi chính sách của tổ chức chứa quy tắc ràng buộc, hãy chạy lệnh sau:
gcloud org-policies set-policy POLICY_PATH
Thay thế POLICY_PATH
bằng đường dẫn đầy đủ đến tệp YAML của chính sách tổ chức. Chính sách này có thể mất đến 15 phút để có hiệu lực.
Ví dụ về chính sách tuỳ chỉnh của tổ chức cho các trường hợp sử dụng phổ biến
Bảng sau đây cung cấp cú pháp của một số quy tắc ràng buộc tuỳ chỉnh cho các trường hợp sử dụng phổ biến:
Mô tả | Cú pháp quy tắc ràng buộc |
---|---|
Hạn chế ghi nhật ký cho các thực thể Cloud DNS |
name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictManagedZoneWithDeniedDescription resourceTypes: - dns.googleapis.com/ManagedZone methodTypes: - CREATE - UPDATE condition: resource.description.contains('denied') actionType: DENY displayName: Restrict create / update for Cloud DNS ManagedZone resources description: Prevents users from creating / updating for Cloud DNS ManagedZone resources |
Các tài nguyên được hỗ trợ bởi Cloud DNS
Bảng sau đây liệt kê các tài nguyên Cloud DNS mà bạn có thể tham chiếu trong các quy tắc ràng buộc tuỳ chỉnh.Tài liệu tham khảo | Trường |
---|---|
dns.googleapis.com/ManagedZone |
resource.cloudLoggingConfig.enableLogging
|
resource.description
| |
resource.dnsName
| |
resource.dnssecConfig.defaultKeySpecs.algorithm
| |
resource.dnssecConfig.defaultKeySpecs.keyLength
| |
resource.dnssecConfig.defaultKeySpecs.keyType
| |
resource.dnssecConfig.nonExistence
| |
resource.dnssecConfig.state
| |
resource.forwardingConfig.targetNameServers.domainName
| |
resource.forwardingConfig.targetNameServers.forwardingPath
| |
resource.forwardingConfig.targetNameServers.ipv4Address
| |
resource.forwardingConfig.targetNameServers.ipv6Address
| |
resource.name
| |
resource.privateVisibilityConfig.gkeClusters.gkeClusterName
| |
resource.privateVisibilityConfig.networks.networkUrl
| |
resource.serviceDirectoryConfig.namespace.namespaceUrl
| |
resource.visibility
| |
dns.googleapis.com/Policy |
resource.alternativeNameServerConfig.targetNameServers.forwardingPath
|
resource.alternativeNameServerConfig.targetNameServers.ipv4Address
| |
resource.alternativeNameServerConfig.targetNameServers.ipv6Address
| |
resource.description
| |
resource.dns64Config.scope.allQueries
| |
resource.enableInboundForwarding
| |
resource.enableLogging
| |
resource.name
| |
resource.networks.networkUrl
| |
dns.googleapis.com/ResponsePolicy |
resource.description
|
resource.gkeClusters.gkeClusterName
| |
resource.networks.networkUrl
| |
resource.responsePolicyName
| |
dns.googleapis.com/ResponsePolicyRule |
resource.behavior
|
resource.dnsName
| |
resource.localData.localData.name
| |
resource.localData.localData.routingPolicy.geo.enableFencing
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.externalEndpoints
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.ipAddress
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.ipProtocol
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.loadBalancerType
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.networkUrl
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.port
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.project
| |
resource.localData.localData.routingPolicy.geo.item.healthCheckedTargets.internalLoadBalancer.region
| |
resource.localData.localData.routingPolicy.geo.item.location
| |
resource.localData.localData.routingPolicy.geo.item.rrdata
| |
resource.localData.localData.routingPolicy.healthCheck
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.enableFencing
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.externalEndpoints
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.ipAddress
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.ipProtocol
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.loadBalancerType
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.networkUrl
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.port
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.project
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.healthCheckedTargets.internalLoadBalancer.region
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.location
| |
resource.localData.localData.routingPolicy.primaryBackup.backupGeoTargets.item.rrdata
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.externalEndpoints
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.ipAddress
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.ipProtocol
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.loadBalancerType
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.networkUrl
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.port
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.project
| |
resource.localData.localData.routingPolicy.primaryBackup.primaryTargets.internalLoadBalancer.region
| |
resource.localData.localData.routingPolicy.primaryBackup.trickleTraffic
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.externalEndpoints
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.ipAddress
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.ipProtocol
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.loadBalancerType
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.networkUrl
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.port
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.project
| |
resource.localData.localData.routingPolicy.wrr.item.healthCheckedTargets.internalLoadBalancer.region
| |
resource.localData.localData.routingPolicy.wrr.item.rrdata
| |
resource.localData.localData.routingPolicy.wrr.item.weight
| |
resource.localData.localData.rrdata
| |
resource.localData.localData.ttl
| |
resource.localData.localData.type
| |
resource.ruleName
|