注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
通过 OCI CLI 自动化 Oracle Data Safe 注册,简化持续数据库监视
简介
在当今复杂的威胁环境中,保持强大的 Oracle 数据库网络安全态势至关重要。持续监视是主动识别漏洞、错误配置和潜在威胁的关键,然后才能被利用。随着网络威胁变得更加复杂和有针对性,对合规性、异常活动和未经授权的访问进行定期评估变得越来越重要。
使用 Oracle Data Safe 控制台在 Oracle Data Safe 中手动注册多个数据库可能耗费大量人力和时间。此教程提供了一种简化的方法,可以在 OCI Cloud Shell 界面中使用 Oracle Cloud Infrastructure 命令行界面 (OCI CLI) 命令和脚本自动执行注册流程,从而显著减少手动操作和所需时间。
目标读者
- 数据库管理员和 OCI 安全管理员。
目标
-
使用 OCI CLI 自动注册 Oracle Data Safe,以减少手动操作,并确保配置一致。
用例:使用 OCI CLI 在 Oracle Data Safe 中自动注册和管理所有 Oracle Database 即服务 (DBaaS)。
在本教程中,我们将指导您使用 OCI CLI 自动将 Oracle Database 作为服务 (DBaaS) 注册到 Oracle Data Safe 中。我们将使用一个简单的示例来演示这一过程,重点介绍针对您管理 Oracle Data Safe 操作的特定区间定制的 OCI CLI 命令。本教程还可以用作参考,以适应注册内部部署目标数据库的过程。有关详细信息,请参阅注册 Oracle 内部部署数据库。
要下载完整脚本,请参见 GitHub Repository 。
先决条件
-
访问 OCI Cloud Shell:
要开始使用 OCI Cloud Shell,您必须首先通过 Oracle Cloud Infrastructure Identity and Access Management (OCI IAM) 策略授予用户访问权限。有关更多信息,请参见 OCI Cloud Shell 。
允许访问的 OCI IAM 策略示例:
allow group <GROUP-NAME> to use cloud-shell in tenancy
如果要指定域,请使用:
allow group <DOMAIN-NAME>/<GROUP-NAME> to use cloud-shell in tenancy
-
Oracle Data Safe 的权限:
授予对所有 Oracle Data Safe 资源的用户组权限。有关详细信息,请参阅创建 Oracle Data Safe 管理员组。
OCI IAM 策略示例:
Allow group Data-Safe-Admins to manage data-safe-family in tenancy
-
在所有目标数据库中创建 Oracle Data Safe 服务账户:
Oracle Data Safe 的每个目标数据库都需要一个服务账户。自治数据库默认包含此功能,但对于非自治数据库,必须手动创建它。有关详细信息,请参阅在目标数据库上创建 Oracle Data Safe 服务账户。
SQL 命令:
CREATE USER DATASAFEADMIN identified by password DEFAULT TABLESPACE "DATA" TEMPORARY TABLESPACE "TEMP"; GRANT CONNECT, RESOURCE TO DATASAFEADMIN;
注:
- 密码必须超过 14 个字符,包括大写字母、小写字母、数字和特殊字符。
- 避免使用 SYSTEM 或 SYSAUX 表空间。
要授予角色,请从 Oracle Data Safe 控制台下载并运行
datasafe_privileges.sql
脚本。以 SYS 身份运行该脚本。有关更多信息,请参见 Grant Roles to the Oracle Data Safe Service Account on Your Target Database 。示例脚本输出:
SQL> @datasafe_privileges.sql DATASAFEADMIN GRANT ALL Enter value for USERNAME (case sensitive matching the username from dba_users) Setting USERNAME to DATASAFEADMIN Enter value for TYPE (grant/revoke) Setting TYPE to GRANT Enter value for MODE (audit_collection/audit_setting/data_discovery/masking/assessment/all) Setting MODE to ALL Granting AUDIT_COLLECTION privileges to "DATASAFEADMIN" ... Granting AUDIT_SETTING privileges to "DATASAFEADMIN" ... Granting DATA_DISCOVERY role to "DATASAFEADMIN" ... Granting MASKING role to "DATASAFEADMIN" ... Granting ASSESSMENT role to "DATASAFEADMIN" ... Done. Disconnected from Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production Version 21.1.0.0.0 [oracle@dbcs21c ~]$
任务 1:访问 OCI Cloud Shell
访问 OCI Cloud Shell 以利用其集成功能。
-
登录到 OCI 控制台。
-
单击控制台标题中的 Cloud Shell/Code Editor(云 Shell/代码编辑器)图标,然后从下拉菜单中选择 Cloud Shell 。请注意,OCI Cloud Shell 启动时,在 OCI Cloud Shell 中运行的 OCI CLI 将针对控制台区域选择菜单中选择的区域执行命令。
任务 2:为目标数据库创建专用端点
Oracle Data Safe 支持使用公共或专用 IP 地址连接到 Oracle 数据库。对于具有专用 IP 地址的数据库,您可以选择两种方式:Oracle Data Safe 专用端点或 Oracle Data Safe 内部部署连接器。在本教程中,我们将重点创建用于注册 DBaaS 数据库的专用端点。
脚本名:generate_private_endpoints_and_commands_for_missing_vcns.sh
。
说明:此脚本标识指定 OCI 区间中缺少 Oracle Data Safe 专用端点的 VCN。它生成 CSV 文件,列出缺少的 VCN 及其关联的子网,并创建包含 OCI CLI 命令的 shell 脚本,以便为每个 VCN 创建必要的专用端点。
执行相应步骤:
-
提示用户输入区间 OCID。
-
确定缺少 Oracle Data Safe 专用端点的 VCN。
-
列出缺少的 VCN 及其关联的子网。
-
生成名为
list_vcns_without_private_endpoints.csv
的 CSV 文件,其中包含缺少 VCN 和子网的详细信息。 -
创建名为
create_private_endpoints_commands.sh
的 shell 脚本,其中包含 OCI CLI 命令,以便为标识的 VCN 创建专用端点。
输出样例:
任务 3:以 JSON 格式生成目标数据库身份证明
在本教程中,所有目标数据库都使用单个 Oracle Data Safe 服务账户。因此,对于所有目标数据库,数据库身份证明 JSON 文件将相同。
脚本名:generate_target_db_credentials.sh
。
说明:此脚本提示用户输入用户名和密码,然后创建名为 Credentials_Target_DBaaS.json
的 JSON 文件,其中包含提供的身份证明。JSON 文件用于安全地存储目标数据库的用户名和密码。
执行相应步骤:
-
提示用户输入用户名。
-
提示用户输入口令。
-
创建一个名为
Credentials_Target_DBaaS.json
的 JSON 文件,其中包含用户名和密码。
示例脚本输出:
任务 4:生成 JSON 格式的专用端点连接选项
脚本名:generate_Connection_Options_private_endpoints.sh
。
说明:此脚本自动列出 OCI 区间中的 VCN、子网和 Oracle Data Safe 专用端点。它生成 CSV 文件,其中包含有关每个专用端点的详细信息(包括关联的 VCN 和子网名称),并为每个端点创建单独的 JSON 文件以定义 Oracle Data Safe 连接选项。
执行相应步骤:
-
提示用户输入区间 ID。
-
列出所有 VCN 并将输出保存到
vcn_list.txt
。 -
列出所有子网并将输出保存到
subnet_list.txt
。 -
列出所有 Oracle Data Safe 专用端点,并将输出保存到
PE_list.txt
。 -
生成名为
list_All_private_endpoints_details.csv
的 CSV 文件,其中包含有关每个专用端点的详细信息。 -
为每个专用端点创建 JSON 文件以指定 Oracle Data Safe 连接选项。
示例脚本输出:
任务 5:将自治数据库注册到 Oracle Data Safe
将 Oracle Autonomous Database Serverless 注册到 Secure Access from Everywhere 时,您无需选择连接选项或指定服务账户详细信息,因为默认情况下会包括这些信息。在本教程中,我们将演示如何管理和注册 Oracle Autonomous Database Serverless。
脚本名:generate_Autonomous_database_details_with_data_safe.sh
。
说明:此脚本自动列出 OCI 区间中的 Oracle Autonomous Databases 并检查其 Oracle Data Safe 注册状态的过程。它生成包含所有 Oracle 自治数据库详细信息的 CSV 文件,并为未注册到 Oracle Data Safe 的数据库创建 JSON 文件。此外,该脚本还为每个未注册的数据库准备 Oracle Data Safe 注册命令,并将其保存在 shell 脚本中。这样,用户可以通过运行生成的命令来快速注册未注册的数据库。
执行相应步骤:
-
区间 ID 的提示。
-
使用 Oracle Autonomous Database 详细信息生成 CSV 文件。
-
为未注册的数据库创建 JSON 文件。
-
在 shell 脚本中准备 Oracle Data Safe 注册命令。
-
运行注册命令以注册数据库。
示例脚本输出:
任务 6:将 Oracle Cloud 数据库注册到 Oracle Data Safe
脚本名:generate_Cloud_database_details_with_data_safe.sh
。
说明:自动提取和处理 Oracle 云数据库详细信息及其专用端点,创建 JSON 配置文件并生成 Oracle Data Safe 的注册命令。
执行相应步骤:
-
区间 ID 的提示。
-
列出 DBaaS 数据库并保存到
Output1.txt
。 -
为缺少 VM 集群 ID 和数据库系统 ID 的数据库附加子网 ID。
-
将结果保存到
Oracle_Cloud_Databases_Details.csv
。 -
列出专用端点并保存到
Datasafe_Private-Endpoint_List.txt
。 -
为每个 PDB 名称生成 JSON 文件。
-
在
Datasafe_CloudDB_Registration_Commands.sh
中创建注册命令。
示例脚本输出:
任务 7:更新安全性和用户评估计划
您可以配置调度,以自动将目标数据库的最新安全性和用户评估保存到 OCI 中的指定区间。有关更多信息,请参阅安排安全性评估和安排用户评估。
脚本名:generate_datasafe_assessment_schedules.sh
。
说明:此 shell 脚本用于自动执行检索 Oracle Data Safe 目标数据库及其相应的安全性和用户评估,以及为 OCI 生成更新调度的过程。该脚本会提示用户输入区间 ID,在 Oracle Data Safe 中检索活动目标数据库,并生成两个更新调度脚本,一个用于安全评估,一个用于用户评估。
执行相应步骤:
-
区间 ID 的提示。
-
输入区间 ID。
-
列出活动目标:保存到
Datasafe_Active_TargetDB_list.txt
。 -
检索评估:将详细信息附加到
Datasafe_Active_TargetDBs.txt
。 -
生成脚本:创建
schedule_security_assessments.sh
和schedule_user_assessments.sh
。
示例脚本输出:
任务 8:开始收集目标数据库的审计日志
注册目标数据库时,Oracle Data Safe 会自动检测可用的审计线索并为每个目标数据库创建相应的审计线索资源。启动审计线索收集后,Oracle Data Safe 会将审计记录从目标数据库复制到其资料档案库以进行监视和分析。您可以根据需要启动或停止审计数据收集,从而控制审计数据收集。有关详细信息,请参阅审计线索。
脚本名:Generate_DataSafe_Audit_Collection_Scripts.sh
。
说明:脚本 Generate_DataSafe_Audit_Collection_Scripts.sh
自动收集 Oracle Data Safe 目标数据库的审计线索数据的过程。它会提示用户输入区间 ID 和审计线索收集开始时间,检索状态为 NOT_STARTED 的审计线索,并生成单个 shell 脚本来为所有目标数据库启动审计线索收集。
执行相应步骤:
-
输入区间 ID:提示用户输入 OCI 区间 ID。
-
输入开始时间:以
YYYY-MM-DD
格式提示审计收集开始时间。 -
提取审计线索:从 OCI 检索状态为 NOT_STARTED 的审计线索。
-
生成 CSV:将相关的审计线索数据提取到
audit_trails.csv
中。 -
创建脚本:使用命令生成
Data_safe_Target_DB_Audit_Collection_Start.sh
,以便为所有目标启动审计收集。
示例脚本输出:
任务 9:准备 Oracle Data Safe 库存
脚本名:generate_data_safe_db_inventory.sh
。
说明:此 shell 脚本与 OCI 进行交互,以根据以下类型检索和处理 Oracle Data Safe 目标数据库信息:AUTONOMOUS_DATABASE、DATABASE_CLOUD_SERVICE 和 INSTALLED_DATABASE。它生成包含每种数据库类型详细信息的输出文件。
执行相应步骤:
-
输入区间 ID:提示用户输入数据库所在的区间 ID。
-
列出和筛选数据库:列出指定区间中的所有 Oracle Data Safe 目标数据库,并按类型筛选它们。
-
检索数据库详细信息:
-
AUTONOMOUS_DATABASE:检索详细信息,例如显示名称、数据库 ID 和基础结构类型。
-
DATABASE_CLOUD_SERVICE:检索详细信息,例如数据库系统 ID、VM 集群 ID(处理空值)和监听程序端口。
-
INSTALLED_DATABASE:检索信息,包括实例 ID、IP 地址和服务名称。
-
-
生成输出文件:使用收集的详细信息为每个数据库类型创建单独的文件。
-
清除:删除临时文件并最终确定输出。
示例脚本输出:
相关链接
确认
-
作者 — Alex Kovuru(首席云架构师)
-
贡献者 — Indiradarshni Balasundaram(云工程师)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Streamline Continuous Database Monitoring by Automating Oracle Data Safe Registration with OCI CLI
G15077-01
September 2024