本文目录导读:

清理未使用的权限通常指管理云平台(如阿里云、AWS、Azure)或操作系统中的权限、角色、策略,为了安全合规,需要通过自动化脚本识别并移除冗余权限。
以下提供针对云平台(以阿里云为例) 和Linux系统的清洗思路及脚本模板。
云平台:清理未使用的RAM(资源访问管理)权限
这是最典型的需求,核心思路是:遍历所有权限策略 -> 检查其引用次数(附加到用户/角色/用户组) -> 若引用为0且非预置权限 -> 删除。
阿里云(使用阿里云CLI + Shell脚本)
前提条件:
- 已安装并配置
aliyun cli。 - 拥有
AliyunRAMReadOnlyAccess(读)和AliyunRAMFullAccess(删)权限。
#!/bin/bash
# 安全清理阿里云未使用的自定义权限策略
# 获取所有自定义权限策略列表
echo "正在获取所有自定义权限策略..."
policies=$(
aliyun ram ListPolicies \
--PolicyType Custom \
--MaxItems 500 \
--format json
)
# 遍历每个策略
echo "$policies" | jq -r '.Policies.Policy[] | .PolicyName + ":" + .DefaultVersion' | while IFS=':' read -r name version; do
# 查询该策略被哪些实体(用户、组、角色)引用
entities=$(
aliyun ram ListEntitiesForPolicy \
--PolicyType Custom \
--PolicyName "$name"
)
# 判断引用数量
user_count=$(echo "$entities" | jq '.Users.User | length')
group_count=$(echo "$entities" | jq '.Groups.Group | length')
role_count=$(echo "$entities" | jq '.Roles.Role | length')
total=$((user_count + group_count + role_count))
if [ "$total" -eq 0 ]; then
echo "发现未使用策略: $name (版本: $version)"
# 安全措施:先备份策略内容(可选)
aliyun ram GetPolicyVersion \
--PolicyName "$name" \
--PolicyType Custom \
--VersionId "$version" \
--format json > "./backup_policy_${name}.json"
echo "已备份到 ./backup_policy_${name}.json"
# 执行删除(建议先注释,手动确认后再取消注释)
# aliyun ram DeletePolicy --PolicyName "$name" --PolicyType Custom
# echo "已删除策略: $name"
fi
done
echo "扫描结束。"
AWS(使用AWS CLI + Shell脚本)
AWS 的权限管理相对严格,需区分 Customer Managed Policies(客户托管策略)和 Inline Policies(内联策略)。
#!/bin/bash
# 扫描并列出AWS中未关联的客户托管策略
echo "获取所有客户托管策略..."
policies=$(aws iam list-policies --scope Local --only-attached false --query 'Policies[*].[PolicyName, Arn]' --output text)
while IFS=$'\t' read -r name arn; do
# 使用 get-policy-version 检查是否被引用(更好的替代是 list-entities-for-policy)
attachment_count=$(aws iam list-entities-for-policy --policy-arn "$arn" --query 'length(PolicyUsers[]) + length(PolicyGroups[]) + length(PolicyRoles[])' --output text)
if [ "$attachment_count" -eq 0 ]; then
echo "未使用策略: $name ($arn)"
# 备份
aws iam get-policy-version --policy-arn "$arn" --version-id $(aws iam list-policy-versions --policy-arn "$arn" --query 'Versions[?IsDefaultVersion==`true`].VersionId' --output text) > "./aws_backup_${name}.json"
# 删除前建议手动确认,或添加 -y 参数
# aws iam delete-policy --policy-arn "$arn"
fi
done <<< "$policies"
操作系统:清理Linux系统中未使用的Sudo权限或组权限
清理过期的 sudoers 条目(谨慎操作)
注意:直接修改 /etc/sudoers 风险极高,正确的做法是检查 /etc/sudoers.d/ 下的文件。
#!/bin/bash
# 检查系统中已不存在的用户所拥有的sudo权限
echo "检查 /etc/sudoers.d/ 中已删除用户的残留权限..."
for file in /etc/sudoers.d/*; do
# 跳过注释或非文件
[ -f "$file" ] || continue
# 提取文件中声明的用户名(假设格式为 “username ALL=(ALL)” )
users_in_file=$(grep -oP '^\s*[\w.-]+' "$file")
for user in $users_in_file; do
# 检查用户是否存在于系统中
if ! id "$user" &>/dev/null; then
echo "发现残留权限: 用户 '$user' 已不存在,其权限定义在 $file"
# 备份文件
cp "$file" "${file}.bak.$(date +%Y%m%d%H%M%S)"
# 移除包含该用户的行(危险操作,请确保备份)
# sed -i "/^$user /d" "$file"
# echo "已从 $file 中移除 $user 的权限"
fi
done
done
清理已删除用户的组群成员关系
#!/bin/bash
# 检查各用户组中是否存在已删除的用户
echo "检查 /etc/group 中已删除用户的残留..."
while IFS=: read -r group_name _ group_id members; do
[ -z "$members" ] && continue
IFS=',' read -ra user_list <<< "$members"
for user in "${user_list[@]}"; do
if ! id "$user" &>/dev/null; then
echo "组 $group_name (GID: $group_id) 包含已删除的用户 '$user'"
# 此处可执行清理命令(需谨慎):
# gpasswd -d "$user" "$group_name" 2>/dev/null # 但该命令要求用户存在,所以改用 sed
# sed -i "s/:$user,/:,/" /etc/group # 替换格式要注意
fi
done
done < /etc/group
最佳实践与风险控制
- 先扫描,后删除:脚本默认只输出日志,不执行删除,将实际删除命令注释或放在
if之后由你手动取消注释。 - 强制备份:任何删除前都应备份数据(策略内容、sudoers文件),上述脚本已包含备份步骤。
- 设置冷却期:在云平台上,权限可能被自动化工具(如Terraform、Ansible)动态引用,建议:标记为未使用后,观察7天再删除。
- 忽略预置/内置权限:云平台的内置权限(如
AdministratorAccess)不可删除,脚本中通过PolicyType Custom进行过滤。 - 使用云厂商的合规工具:
- 阿里云:访问控制(RAM)控制台 -> 权限策略管理 -> 自动提供“最近引用时间”字段。
- AWS:可以使用
IAM Access Analyzer策略生成,自动分析哪些权限被真正使用。
进阶:基于日志的精准清理
仅凭“未关联”删除权限风险较高(因为可能关联后被动态解除),真正的“未使用”应该基于API调用记录。
思路:
- 开启云平台的 CloudTrail (AWS) 或 ActionTrail (阿里云)。
- 查询过去90天内该权限对应的Action是否被调用。
- 如果某权限策略中的Action从未出现在日志中,该策略才算“未使用”。
这涉及更复杂的数据分析和API查询,通常需要配合Python+云SDK实现。
- 清理云平台权限:使用官方CLI +
ListEntitiesForPolicy是标准方法。 - 清理系统权限:使用
id命令 + 文件解析。 - 核心原则:备份 + 手动确认 + 小范围灰度(先删非核心权限,再删重要权限)。
希望这些脚本和思路能帮助你安全高效地清理未使用权限,如果你有特定的云平台或系统版本,可以提供更多细节以获取更精准的脚本。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播