在企业内部控制员工的日志服务资源访问权限时,可通过 IAM Policy 实现不同岗位角色的权限控制与管理。本示例演示使用 IAM Policy 控制不同员工对日志服务各个功能模块和资源的操作权限。
企业内部通常设置了系统管理员、研发工程师、运维工程师、产品运营和数据分析等岗位,各个岗位有明确的分工,各岗位人员应具备不同的日志服务资源访问权限,并在岗位发生变化时及时调整其权限策略。
面对该场景,您可以通过以下方式管理各个角色的权限范围。
各个岗位的对应用户组及权限范围示例如下:
岗位 | 用户组 | 职责与权限范围 |
---|---|---|
运维管理员 | 无 | 火山引擎主账号,具备日志服务的所有权限,负责权限管理。可以创建 IAM 用户、用户组、自定义授权策略。 |
运维工程师 | SysOM | 负责维护线上系统,在系统异常时及时发现问题。例如采集网站的访问日志,并配置访问失败告警,在用户访问大范围报错的情况下及时识别并排查问题。
|
研发工程师 | SysRD | 辅助运维人员排查线上问题,可为其授予所有 IAM Project 的检索、告警仪表盘权限,便于其查看仪表盘与详细日志,排查线上问题。包括:
|
运营/BI | ProductBI | 配置并查看运营大盘,例如创建网站的业务看板,统计网站的访问 UV、PV、访问来源、访问前十页面等数据。
|
IAM 用户组是 IAM 用户的集合,用于统一管理用户的权限。当用户组被绑定权限策略后,用户组里的各个用户也会拥有对应的权限。您可以参考以下步骤为各个岗位创建一个 IAM 用户组。
IAM 中的权限类型包括系统预置策略和用户自定义策略。如果系统预置策略不满足业务需求,需要提前创建自定义策略。日志服务提供常见的访问策略示例供您参考,详细信息请参考自定义的权限策略示例。创建自定义策略的操作步骤,请参考新建策略。
单击新建自定义策略。
设置策略名称和策略内容,并单击提交。
说明
日志服务暂不支持通过可视化编辑器快速编写权限策略,您可以在 JSON 编辑器页签中直接编写 JSON 格式的访问策略内容。
设置策略名称为 SysOMPolicy,策略内容可请参考如下策略示例。您也可以参考自定义的权限策略示例,设置不同管控粒度的权限策略。
运维访问策略示例:为 IAM 用户组 SysOM 授予所有日志项目和日志主题的管理权限、所有采集配置和机器组的管理权限、配置并管理索引、检索日志、下载日志等检索分析相关的所有权限、创建并管理通知组、告警策略、仪表盘的权限。
{ "Statement": [ { "Effect": "Allow", "Action": [ "TLS:CreateProject", "TLS:CreateTopic", "TLS:PutLogs", "TLS:WebTracks", "TLS:DeleteTopic", "TLS:ModifyTopic", "TLS:DescribeDownloadTasks", "TLS:DescribeShards", "TLS:DescribeTopic", "TLS:DescribeTopics", "TLS:DeleteProject", "TLS:ModifyProject", "TLS:DescribeProject", "TLS:DescribeConsumerGroups", "TLS:DescribeProjects", "TLS:DescribeRules" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:CreateRule", "tls:DeleteRule", "tls:ModifyRule", "tls:DescribeRule", "tls:DescribeRules", "tls:ApplyRuleToHostGroups", "tls:DeleteRuleFromHostGroups", "tls:CreateHostGroup", "tls:DeleteHostGroup", "tls:ModifyHostGroup", "tls:DescribeHostGroup", "tls:DescribeHostGroups", "tls:DescribeHosts", "tls:DeleteHost", "tls:DescribeHostGroupRules", "tls:ModifyHostGroupsAutoUpdate", "tls:DeleteAbnormalHosts" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:DescribeIndex", "tls:CreateIndex", "tls:DeleteIndex", "tls:ModifyIndex", "tls:SearchLogs", "tls:DescribeHistogram", "tls:DescribeLogContext" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:CreateDownloadTask", "tls:DescribeDownloadTasks", "tls:DescribeDownloadUrl", "tls:CancelDownloadTask" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:CreateAlarmNotifyGroup", "tls:DeleteAlarmNotifyGroup", "tls:DescribeAlarmNotifyGroups", "tls:ModifyAlarmNotifyGroup", "tls:DescribeAlarmNotifyGroup", "tls:CreateAlarm", "tls:DeleteAlarm", "tls:DescribeAlarms", "tls:DescribeAlarm", "tls:ModifyAlarm", "tls:DescribeAlarmLogs", "tls:ManualTriggerAlarm", "tls:DescribeManualTriggerAlarmTask", "tls:ModifyAlarmIncident", "tls:DescribeAlarmIncident", "tls:DisableAlarm", "tls:EnableAlarm", "tls:CreateAlarmContentTemplate", "tls:DeleteAlarmContentTemplate", "tls:DescribeAlarmContentTemplates", "tls:ModifyAlarmContentTemplate", "tls:CreateAlarmWebhookIntegration", "tls:DeleteAlarmWebhookIntegration", "tls:DescribeAlarmWebhookIntegrations", "tls:ModifyAlarmWebhookIntegration" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:CreateDashboard", "tls:DeleteDashboard", "tls:ModifyDashboard", "tls:DescribeDashboard", "tls:DescribeDashboards" ], "Resource": [ "*" ] } ] }
研发访问策略示例:为 IAM 用户组 SysRD 授予配置并管理索引、检索日志、下载日志等检索分析相关的所有权限、创建并管理通知组、告警策略、仪表盘的权限。
{ "Statement": [ { "Effect": "Allow", "Action": [ "tls:DescribeProjects", "tls:DescribeProject", "tls:DescribeTopics", "tls:DescribeTopic" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:DescribeIndex", "tls:CreateIndex", "tls:DeleteIndex", "tls:ModifyIndex", "tls:SearchLogs", "tls:DescribeHistogram", "tls:DescribeLogContext" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:CreateDownloadTask", "tls:DescribeDownloadTasks", "tls:DescribeDownloadUrl", "tls:CancelDownloadTask" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:CreateAlarmNotifyGroup", "tls:DeleteAlarmNotifyGroup", "tls:DescribeAlarmNotifyGroups", "tls:ModifyAlarmNotifyGroup", "tls:DescribeAlarmNotifyGroup", "tls:CreateAlarm", "tls:DeleteAlarm", "tls:DescribeAlarms", "tls:DescribeAlarm", "tls:ModifyAlarm", "tls:DescribeAlarmLogs", "tls:ManualTriggerAlarm", "tls:DescribeManualTriggerAlarmTask", "tls:ModifyAlarmIncident", "tls:DescribeAlarmIncident", "tls:DisableAlarm", "tls:EnableAlarm", "tls:CreateAlarmContentTemplate", "tls:DeleteAlarmContentTemplate", "tls:DescribeAlarmContentTemplates", "tls:ModifyAlarmContentTemplate", "tls:CreateAlarmWebhookIntegration", "tls:DeleteAlarmWebhookIntegration", "tls:DescribeAlarmWebhookIntegrations", "tls:ModifyAlarmWebhookIntegration" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:CreateDashboard", "tls:DeleteDashboard", "tls:ModifyDashboard", "tls:DescribeDashboard", "tls:DescribeDashboards" ], "Resource": [ "*" ] } ] }
运营/BI访问策略示例:为 IAM 用户组 ProductBI 授予检索日志、创建并管理仪表盘的权限。
{ "Statement": [ { "Effect": "Allow", "Action": [ "tls:DescribeProjects", "tls:DescribeProject", "tls:DescribeTopics", "tls:DescribeTopic" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:SearchLogs", "tls:DescribeIndex", "tls:DescribeSavedSearches", "tls:DescribeHistogram" ], "Resource": [ "*" ] }, { "Effect": "Allow", "Action": [ "tls:CreateDashboard", "tls:DeleteDashboard", "tls:ModifyDashboard", "tls:DescribeDashboard", "tls:DescribeDashboards" ], "Resource": [ "*" ] } ] }
单击添加授权。
在授权全局授权页签下单击添加授权。
在用户组页签下找到并选择您在步骤一中创建的用户组 SysOM。
单击确定。
IAM 用户是 IAM 中的实体身份,每个 IAM 用户可以对应企业内的一个员工、系统或应用程序。IAM 用户不是独立的火山引擎账号,且不拥有任何资源,所有 IAM 用户创建的资源均由所属的火山引擎账号付费。
创建 IAM 用户并授权的操作步骤如下:
IAM 项目用于对业务部门、项目维度进行云资源的分组管理。运维人员创建采集配置,并设置索引之后,可以记录产品运营所需的网站访问日志数据所在的日志项目与日志主题。运维管理员可以将这些资源添加到 IAM 项目 ProjectNginx 中,并将产品运营所在的用户组 ProductBI 和访问策略 ProductBIPolicy 绑定此 IAM 项目。用户组中的成员将只具备此项目中指定资源的指定访问权限。
创建 IAM 项目并绑定用户组的操作步骤如下:
完成以上配置后,各个岗位人员可以在指定的权限范围内通过控制台或 API 方式访问指定的资源。
说明
如果 IAM 用户请求访问权限外的资源,或对指定资源进行权限外的操作,日志服务将会返回对应的错误码。例如产品运营角色不具备创建采集配置或修改索引的权限,在访问对应页面时,日志服务控制台会返回错误响应信息。