如何在GitHub Actions工作流中取消az account get-access-token的输出掩码?
在GitHub Actions中取消az account get-access-token输出掩码的方法
为什么输出会被掩码?
GitHub Actions会自动识别并掩码两类敏感内容:一是仓库中存储的Secrets值,二是通过OIDC登录流程获取的访问令牌,目的是防止敏感信息泄露,即便查看原始日志也无法直接看到这些值。
PoC验证环境下的解决方法
仅限在测试/PoC环境中使用,生产环境绝对禁止以下操作,避免令牌泄露:
方法一:Base64编码输出
修改工作流中Run az commands步骤的脚本,将命令输出通过Base64编码后打印,绕开自动掩码检测:- name: "Run az commands" run: | az account get-access-token --resource=${{ secrets.AZURE_CLIENT_ID }} --scope=api://${{ secrets.AZURE_TARGET_API }}/.default | base64运行后,日志中会显示Base64编码后的字符串,你可以复制到本地,用
echo <编码字符串> | base64 -d命令解码,就能看到完整的令牌内容。方法二:拆分输出内容(可选)
如果只需要查看令牌的部分信息(比如格式、过期时间),可以用jq提取非敏感字段,或者对令牌字符串做拆分处理后输出:- name: "Run az commands" run: | # 提取并打印过期时间等非敏感字段 az account get-access-token --resource=${{ secrets.AZURE_CLIENT_ID }} --scope=api://${{ secrets.AZURE_TARGET_API }}/.default | jq '.expiresOn' # 或者拆分令牌字符串(仅示例,按需调整) TOKEN=$(az account get-access-token --resource=${{ secrets.AZURE_CLIENT_ID }} --scope=api://${{ secrets.AZURE_TARGET_API }}/.default | jq -r '.accessToken') echo "Token前半部分: ${TOKEN:0:50}" echo "Token后半部分: ${TOKEN: -50}"
重要提醒
以上操作仅适用于PoC验证场景,完成测试后必须立即移除相关代码,确保敏感令牌不会泄露到日志中。
内容的提问来源于stack exchange,提问作者Shuzheng
相关产品推荐
相关产品推荐

