Bài viết này mô tả các trường hợp sử dụng tính năng Quyền truy cập dựa trên bối cảnh, bao gồm cả các chính sách sử dụng cấp truy cập tuỳ chỉnh. Trong những ví dụ này, bạn sẽ tạo cấp truy cập tuỳ chỉnh ở chế độ Nâng cao bằng Ngôn ngữ diễn đạt thông thường (CEL).
Nếu muốn, bạn cũng có thể sử dụng các hàm và macro khi tạo cấp truy cập tuỳ chỉnh bằng biểu thức CEL.
Để xem các ví dụ về cấp truy cập được phát triển ở chế độ Cơ bản (sử dụng giao diện quyền truy cập dựa trên bối cảnh ), hãy chuyển đến phần Các ví dụ về quyền truy cập dựa trên bối cảnh ở chế độ Cơ bản.
Ví dụ về quy trình xác thực
Cho phép người dùng truy cập dựa trên mức độ bảo mật của thông tin đăng nhập của người dùng
Để cải thiện tính bảo mật của quyền truy cập vào các ứng dụng chứa dữ liệu nhạy cảm, bạn có thể xác định cách người dùng xác thực với hệ thống để quyết định xem họ có được truy cập vào ứng dụng hay không.
Ví dụ: người dùng chỉ đăng nhập bằng mật khẩu chỉ có thể được phép truy cập vào các ứng dụng không chứa thông tin nhạy cảm. Trong khi đó, người dùng đăng nhập bằng khoá bảo mật vật lý làm yếu tố thứ hai có thể được phép truy cập vào các ứng dụng nhạy cảm nhất của doanh nghiệp.
Cấp truy cập này sử dụng thuộc tính request.auth để xác minh rằng người dùng đăng nhập bằng cả mật khẩu và khoá vật lý cho quy trình Xác minh 2 bước, đồng thời có thể truy cập vào các ứng dụng nhạy cảm.
request.auth.claims.crd_str.pwd == true && request.auth.claims.crd_str.hwk == true
Cho phép người dùng có thông tin xác thực nghiêm ngặt truy cập
Thông thường, quản trị viên muốn chỉ thực thi quyền truy cập vào tài nguyên của công ty sau khi người dùng đã xác thực bằng thông tin xác thực nghiêm ngặt. Ví dụ sau đây sử dụng các thuộc tính levels và request.auth như sau:
- Nếu người dùng truy cập từ một thiết bị của công ty, thì bất kỳ phương thức xác thực đa yếu tố (MFA) nào (ngoại trừ SMS) đều sẽ đủ (Các phương thức có thể là thông báo đẩy, khoá bảo mật phần cứng hoặc phần mềm hoặc mật khẩu dùng một lần)
- Nếu người dùng truy cập từ một thiết bị không phải của công ty, thì phải sử dụng khoá bảo mật phần cứng hoặc phần mềm
// Require basic MFA (not SMS) on corporate devices and security key (hardware or software) if not
levels.Require_Secure_Device &&
(
(
levels.Require_Corporate_Device &&
request.auth.claims.crd_str.mfa &&
!request.auth.claims.crd_str.sms
) ||
(
!levels.Require_Corporate_Device &&
(
request.auth.claims.crd_str.hwk || request.auth.claims.crd_str.swk
)
)
)
Chỉ cho phép truy cập vào ứng dụng từ các phiên được liên kết với DBSC
Chỉ dành cho ứng dụng web trên máy tính và không áp dụng cho ứng dụng di động hoặc API
Bạn có thể cải thiện tính bảo mật của quyền truy cập vào các ứng dụng chứa dữ liệu nhạy cảm bằng cách yêu cầu Thông tin xác thực phiên được liên kết với thiết bị (DBSC). DBSC liên kết phiên của người dùng với thiết bị của họ khi họ sử dụng trình duyệt Chrome trên Windows. Điều này có thể giảm đáng kể nguy cơ bị chiếm đoạt phiên.
Cấp truy cập này sử dụng thuộc tính request.auth để xác minh rằng phiên của người dùng được liên kết với một thiết bị cụ thể. Nếu có, quyền truy cập sẽ được cấp cho ứng dụng. Nếu không (nghĩa là phiên không được liên kết với DBSC), quyền truy cập sẽ bị từ chối.
Để tránh lỗi, hãy bật DBSC cho tất cả tài khoản người dùng chịu sự điều chỉnh của cấp truy cập này. Để biết thông tin chi tiết, hãy chuyển đến phần Bật DBSC.
Đặt cấp truy cập thành Chế độ giám sát trước khi bật Chế độ đang hoạt động. Ở Chế độ giám sát, bạn có thể kiểm thử tác động của việc thực thi cấp truy cập mà không làm gián đoạn quyền truy cập của người dùng.
Sử dụng biểu thức CEL này để tạo cấp truy cập tuỳ chỉnh:
request.auth.sessionBoundToDevice(origin) == true
Sử dụng biểu thức CEL này để chỉ thực thi DBSC trên các thiết bị Windows có trình duyệt Chrome phiên bản 136 trở lên:
!(device.os_type == OsType.DESKTOP_WINDOWS && device.chrome.versionAtLeast("136.0.0")) || request.auth.sessionBoundToDevice(origin) == true
Ví dụ về thiết bị
Cho phép truy cập từ một thiết bị dựa trên các tín hiệu do đối tác Liên minh BeyondCorp báo cáo
Bạn có thể sử dụng các tín hiệu thiết bị do đối tác Liên minh BeyondCorp báo cáo. Trong ví dụ này, phần mềm Lookout được dùng làm ứng dụng.
Cấp truy cập này sử dụng thuộc tính device để xác minh rằng thiết bị dùng để truy cập vào Google Workspace được Lookout báo cáo là tuân thủ chính sách và điểm bảo mật là Rất tốt.
device.vendors["Lookout"].is_compliant_device == true && device.vendors["Lookout"].device_health_score == DeviceHealthScore.VERY_GOODChỉ cho phép truy cập từ trình duyệt Chrome được quản lý có bản cập nhật mới nhất
Cấp truy cập này sử dụng thuộc tính device để xác minh rằng người dùng đang sử dụng phiên bản mới nhất của trình duyệt Chrome được quản lý và chỉ cho phép truy cập thông qua trình duyệt đó.
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED && device.chrome.versionAtLeast("94.0.4606.81")Cho phép truy cập bằng chứng chỉ doanh nghiệp
Bạn có thể sử dụng chứng chỉ doanh nghiệp cho các thiết bị trong cấp truy cập tuỳ chỉnh để xác định xem một thiết bị có phải là tài sản do công ty sở hữu hay không. Cấp truy cập này sử dụng thuộc tính device để xác minh tài sản. Hãy đọc bài viết Định cấu hình điều kiện về chứng chỉ doanh nghiệp để biết thêm thông tin và ví dụ.
Một thiết bị có thể có nhiều chứng chỉ. Chứng chỉ doanh nghiệp được sử dụng trong cấp truy cập tuỳ chỉnh bằng macro exists(). Ví dụ:
device.certificates.exists(cert, predicate)
Trong ví dụ này, cert là một mã nhận dạng đơn giản để sử dụng trong biến predicate nhằm liên kết với chứng chỉ doanh nghiệp của thiết bị. Macro exists() kết hợp kết quả của vị từ trên mỗi phần tử với toán tử or (||). Macro trả về true nếu ít nhất một chứng chỉ đáp ứng biểu thức vị từ.
Bảng bên dưới liệt kê các thuộc tính mà bạn có thể sử dụng để tạo biểu thức CEL nhằm sử dụng với cấp truy cập tuỳ chỉnh. Xin lưu ý rằng việc so sánh chuỗi sẽ phân biệt chữ hoa chữ thường.
| Thuộc tính | Mô tả | Ví dụ về biểu thức vị từ (trong đó cert là mã nhận dạng của macro) |
|---|---|---|
| is_valid |
Đúng nếu chứng chỉ hợp lệ và chưa hết hạn. |
cert.is_valid |
| cert_fingerprint | Dấu vân tay của chứng chỉ (SHA256 không có phần đệm base64) |
cert.cert_fingerprint == origin. clientCertFingerprint() |
| root_ca_fingerprint | Dấu vân tay của chứng chỉ CA gốc dùng để ký chứng chỉ này (SHA256 không có phần đệm base64) |
cert.root_ca_fingerprint == "the_fingerprint" |
| tổ chức phát hành thẻ |
Tên tổ chức phát hành Để tìm tên tổ chức phát hành, hãy chạy lệnh sau trên chứng chỉ: $ openssl x509 -in ca_1.crt -noout Chuỗi tổ chức phát hành được sử dụng trong cấp truy cập là chuỗi đảo ngược của đầu ra và dấu "/" được thay thế bằng dấu phẩy, ví dụ: EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN |
cert.issuer == "EMAILADDRESS=test_inter1 @beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN" |
| chủ đề | Tên chủ đề của chứng chỉ (tên được mở rộng đầy đủ) |
cert.subject == "CA_SUB" |
| serial_number |
Số sê-ri của chứng chỉ |
cert.serial_number == "123456789" |
| template_id | Mã mẫu của Mẫu chứng chỉ tiện ích X.509 cho chứng chỉ (chuỗi) |
cert.template_id == "1.3.6.1.4.1.311.21. 8.15608621.11768144. 5720724. 16068415.6889630.81. 2472537.7784047" |
Ví dụ về các chính sách thường dùng:
Xác thực rằng thiết bị có chứng chỉ doanh nghiệp hợp lệ do chứng chỉ gốc của công ty ký
device.certificates.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "ROOT_CA_FINGERPRINT")
Xác thực tổ chức phát hành chứng chỉ doanh nghiệp trên thiết bị
device.certificates.exists(cert, cert.is_valid && cert.issuer == "EMAILADDRESS=test_inter1@beyondcorp.in, CN=inter_1, OU=BCEDemo_1, O=BCEDemo, L=NCR, ST=UP, C=IN")
Cho phép truy cập vào các thiết bị đã bật tính năng mã hoá ổ đĩa và khoá màn hình
Ví dụ này sử dụng thuộc tính device để yêu cầu bật cả tính năng mã hoá ổ đĩa và khoá màn hình. Ngoài ra, thiết bị phải được quản trị viên phê duyệt.
Theo mặc định, tất cả các thiết bị do tính năng Xác minh điểm cuối tạo đều được phê duyệt. Tuy nhiên, có những trường hợp bạn có thể muốn chặn một thiết bị, chẳng hạn như khi thiết bị bị mất. Trong những trường hợp này, bạn không muốn các thiết bị đó có thể truy cập vào tài nguyên của công ty.
Đối với các ví dụ khác về cấp truy cập trong tài liệu này, hãy giả sử rằng cấp truy cập này có tên là Require_Secure_Device.
// Require disk encryption and screen lock enabled
// This is applicable across all major platforms (Windows, Mac, Linux, CrOS, iOS, Android)
// This foundational and should be depended upon by all other access levels
device.encryption_status == DeviceEncryptionStatus.ENCRYPTED &&
device.is_secured_with_screenlock &&
device.is_admin_approved_device
Cho phép truy cập vào các thiết bị sử dụng trình duyệt Chrome có các yêu cầu bảo mật cơ bản
Trong ví dụ này, cấp truy cập sử dụng thuộc tính device để yêu cầu trình duyệt Chrome có các yêu cầu bảo mật cơ bản.
// Require Chrome to be managed at profile or browser level, must have
// security event reporting enabled and must be version 97 or greater
levels.Require_Secure_Device &&
(
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_BROWSER_MANAGED ||
device.chrome.management_state == ChromeManagementState.CHROME_MANAGEMENT_STATE_PROFILE_MANAGED
) &&
device.chrome.is_security_event_analysis_enabled &&
device.chrome.versionAtLeast("97")
Cho phép truy cập vào các thiết bị sử dụng trình duyệt Chrome có các yêu cầu bảo mật
Ví dụ này sử dụng thuộc tính device để yêu cầu người dùng truy cập từ một trình duyệt hoặc hồ sơ Chrome được quản lý và Chrome phải bật trình kết nối bảo vệ dữ liệu và mối đe doạ. Ví dụ này sử dụng thuộc tính levels để tham chiếu đến cấp truy cập Yêu cầu Chrome được quản lý đã mô tả trước đó. Ví dụ sau đây giả định rằng cấp truy cập phụ thuộc có tên là Require_Managed_Chrome.
// Require managed chrome (dependent on "Require_Managed_Chrome" access level)
// and require content inspection for downloads as well as URL check enabled
levels.Require_Managed_Chrome &&
device.chrome.is_file_download_analysis_enabled &&
device.chrome.is_realtime_url_check_enabled
Cho phép truy cập vào các thiết bị do công ty sở hữu
Một yêu cầu để kiểm soát quyền truy cập là chỉ cho phép truy cập khi thiết bị được công ty quản lý hoặc sở hữu. Có nhiều cách để xác định xem một thiết bị có phải là thiết bị do công ty sở hữu hoặc quản lý hay không, bao gồm:
- Nếu một thiết bị có số sê-ri khớp với một số sê-ri trong hệ thống quản lý tài sản của công ty
- Nếu một thiết bị có chứng chỉ doanh nghiệp hợp lệ do công ty phát hành
Bạn có thể sử dụng hai phương pháp này trong cấp truy cập tuỳ chỉnh sau đây sử dụng các thuộc tính levels và device để xác định xem thiết bị có phải là thiết bị do công ty sở hữu hoặc quản lý hay không.
// The device is a corporate if one of the following conditions is true:
// 1. If the serial number matches what the admin has uploaded
If the device has a valid enterprise-issued certificate
levels.Require_Secure_Device &&
(
device.is_corp_owned_device ||
device.certificates.exists(cert, cert.is_valid && cert.root_ca_fingerprint == "SOME_ROOT_CA_FINGERPRINT")
)
Dấu vân tay là chuỗi đại diện SHA256 được mã hoá base64 không có phần đệm (ở định dạng nhị phân) của chứng chỉ được mã hoá DER. Bạn có thể tạo chuỗi từ chứng chỉ ở định dạng PEM bằng quy trình sau với openssl:
$ openssl x509 -in cert.pem -out cert.der -outform DER
$ openssl dgst -sha256 -binary cert.der > digest.sha
$ openssl base64 -in digest.sha
Chỉ cho phép truy cập khi dữ liệu trên thiết bị từ CrowdStrike mới nhất
- Dấu thời gian phát hành (iat)
- Dấu thời gian hết hạn (exp)
Cấp truy cập sử dụng thuộc tính device để đảm bảo rằng dữ liệu CrowdStrike là mới nhất. Xin lưu ý rằng Chrome Enterprise Premium có độ trễ vốn có là 90 phút để sử dụng bất kỳ bản đánh giá mới nào từ Falcon ZTA, vì vậy, bạn không nên sử dụng thời lượng dưới một giờ.
// Ensure one of these conditions is true for data from Crowdstrike:
// Must meet one of these conditions
// 1. Device was assessed within the last day
Assessment has not expired (2 weeks since last iat)
"CrowdStrike" in device.vendors && (
request.time - timestamp(device.vendors["CrowdStrike"].data["iat"]) < duration("1d") ||
timestamp(device.vendors["CrowdStrike"].data["exp"]) - request.time > duration("0m")
)
Cho phép truy cập khi Liên minh BeyondCorp coi một thiết bị là tuân thủ
Chrome Enterprise Premium hoạt động với nhiều đối tác trong hệ sinh thái Liên minh BeyondCorp để tích hợp tín hiệu và bối cảnh thiết bị của họ vào giải pháp Chrome Enterprise Premium. Đối tác có thể chia sẻ bất kỳ số lượng thuộc tính nào với Chrome Enterprise Premium và một trong số đó là thuộc tính is_compliant_device. Ví dụ sau đây sử dụng thuộc tính device để cho biết cách chúng ta có thể kiểm tra xem có đối tác nào trong Liên minh BeyondCorp đã tích hợp với Chrome Enterprise Premium và coi thiết bị là tuân thủ hay không.
Macro exists mở rộng biểu thức cho từng đối tác trong Liên minh BeyondCorp bằng toán tử || (hoặc).
// Check to see if any of the BCA partners consider the device to be compliant
["CrowdStrike", "Tanium", "PANW", "Check Point", "Lookout"].exists(
v, v in device.vendors && device.vendors[v].is_compliant_device
)
Cho phép truy cập khi trạng thái xác minh quy trình khởi động của Android là màu xanh lục
Ví dụ này sử dụng các thuộc tính device để đảm bảo rằng các thiết bị đang chạy phiên bản Android an toàn.
Tính năng Xác minh quy trình khởi động kiểm tra xem mã được thực thi có đến từ một nguồn đáng tin cậy (thường là OEM thiết bị) hay không, thay vì từ kẻ tấn công hoặc bị hỏng. Để biết thông tin chi tiết, hãy chuyển đến phần Xác minh quy trình khởi động.
// Require green Android verified boot status
device.android_device_security.verified_boot == true
Cho phép truy cập vào các thiết bị vượt qua quy trình kiểm tra tuân thủ CTS
Ví dụ này sử dụng các thuộc tính device để yêu cầu các thiết bị vượt qua quy trình kiểm tra tuân thủ Bộ kiểm tra tính tương thích (CTS). Để biết thông tin chi tiết, hãy chuyển đến phần Bộ kiểm tra tính tương thích.
// Require devices to pass CTS compliance checks
device.android_device_security.cts_profile_match == true
Cho phép truy cập vào các thiết bị đã bật tính năng Xác minh ứng dụng của Google Play Protect
Ví dụ này sử dụng các thuộc tính device để yêu cầu các thiết bị bật tính năng Xác minh ứng dụng của Google Play Protect.
Tính năng Xác minh ứng dụng quét các ứng dụng để tìm mối đe doạ khi các ứng dụng đó được cài đặt từ các nguồn không phải Google Play. Tùy chọn này cũng định kỳ quét thiết bị để tìm ứng dụng có khả năng gây hại. Tính năng Xác minh ứng dụng được bật theo mặc định. Đối với các thiết bị được quản lý nâng cao, bạn có thể chỉ định xem người dùng có thể tắt tính năng này hay không. Để biết thêm thông tin, hãy xem bài viết Áp dụng chế độ cài đặt cho thiết bị di động Android.
// Require devices to have Google Play Protect Verify Apps enabled
device.android_device_security.verify_apps_enabled == true
Không cho phép truy cập vào các thiết bị có ứng dụng có khả năng gây hại
Ví dụ này sử dụng các thuộc tính device để từ chối quyền truy cập vào các thiết bị có ứng dụng có khả năng gây hại. Các ứng dụng này thường được gọi là phần mềm độc hại. Để biết thông tin chi tiết, hãy chuyển đến phần Ứng dụng có khả năng gây hại (PHA).
// Deny access to devices that have potentially harmful appsandroid_device_security.has_potentially_harmful_apps != true
Ví dụ về quyền truy cập dựa trên thời gian
Chỉ cho phép nhân viên làm theo ca truy cập trong giờ làm việc theo ca
Các doanh nghiệp muốn đảm bảo rằng nhân viên làm theo ca chỉ có thể truy cập vào tài nguyên của công ty trong giờ làm việc theo ca. Các cấp truy cập sau đây sử dụng thuộc tính levels để xác định 3 ca làm việc từ thứ Hai đến thứ Sáu.
// Shift 1 - Monday to Friday, midnight to 8am
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('00:00:00', '08:00:00')
// Shift 2 - Monday to Friday, 8am to 4pm
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('08:00:00', '16:00:00')
// Shift 3 - Monday to Friday, 4pm to midnight
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
request.time.timeOfDay("America/Los_Angeles").between('16:00:00', '00:00:00')
// Allow shift workers to access resources from Monday to Friday between 9 AM to 5 PM, except for July fourth.
levels.Require_Secure_Device &&
request.time.getDayOfWeek("America/Los_Angeles") >= 1 &&
request.time.getDayOfWeek("America/Los_Angeles") <= 5 &&
!(
request.time.getMonth("America/Los_Angeles") == 6 &&
request.time.getDayOfMonth("America/Los_Angeles") == 3
) &&
request.time.timeOfDay("America/Los_Angeles").between('09:30:00', '17:00:00')
Cho phép truy cập tạm thời
Đôi khi, các doanh nghiệp muốn cho phép truy cập khẩn cấp trong trường hợp khẩn cấp khi quản trị viên không có quyền truy cập vào thiết bị an toàn nhưng cần quyền truy cập khẩn cấp trong một khoảng thời gian ngắn.
Trong trường hợp này, hãy tạo cấp truy cập bị giới hạn về thời gian và vị trí bằng thuộc tính levels, rồi chỉ định cấp truy cập đó cho quản trị viên cụ thể. Khi cấp truy cập này được chỉ định, cấp truy cập đó sẽ chỉ hợp lệ trong thời gian đã chỉ định. Sau khi khoảng thời gian này hết hạn, quyền truy cập của quản trị viên sẽ lại được kiểm soát theo các yêu cầu hiện có.
// Allow temporary access to resources on March 1, 2022, between 10 PM to midnight,
// and this access must come from within the US region.
levels.Require_Secure_Device &&
request.time.between('2022-03-01T23:00:00+08:00', '2022-03-02T23:59:59+08:00') &&
origin.region_code == "US"
// Note that the end time is exclusive, so the above potentially has 2 seconds that
// the users may not have access. Another option is to use this
// !between('00:00:01','16:00:00')
Ví dụ về cách kết hợp các điều kiện từ hai cấp
Xác định cấp truy cập mới bằng cách kết hợp các điều kiện từ hai cấp truy cập
Cấp truy cập này sử dụng các thuộc tính levels và yêu cầu người dùng đáp ứng các điều kiện kết hợp của hai cấp truy cập. Trong ví dụ này, access_level_name_1 và access_level_name_2 đề cập đến Tên nội bộ.
levels.access_level_name_1 && levels.access_level_name_2
Google, Google Workspace và những nhãn hiệu cũng như biểu tượng có liên quan là nhãn hiệu của Google LLC. Tất cả tên công ty và sản phẩm khác đều là nhãn hiệu của các công ty liên kết với tên đó.