我们在订阅中有几个存储帐户,并希望将访问权限限制为仅少数用户和一个应用程序。因此,除了订阅所有者和具有应用程序 ID 的备份应用程序“ComVault”之外,任何人都不应访问这些存储帐户。最初,所有用户都已获得订阅级别的访问权限,并且默认情况下会继承对存储帐户的访问权限。我们尝试了以下方法:
- 创建了一个 AD 组并添加了我们不想访问存储帐户的所有用户和应用程序,然后对其应用了以下自定义角色:
{
“名称”:“自定义 - Microsoft.Storage.DenyAccess”,
“ID”: ””,
“IsCustom”:true,
“描述”:“拒绝对 Commvault 存储帐户 v20190409 的权限。”,
“操作”:[
“*”
],
“非操作”:[
“Microsoft.Storage/*/读取”
“Microsoft.Storage/*/Write”
“Microsoft.Storage/*/删除”
],
“非数据操作”:[
“Microsoft.Storage/*/读取”
“Microsoft.Storage/*/Write”
“Microsoft.Storage/*/删除”
],
“可分配范围”:[
“/订阅/”
]
}
从逻辑上讲这应该可行,但实际上却不行。请建议我们可以做些什么来实现上述要求。
答案1
好的,所以您想在顶层(订阅)分配访问权限,但阻止对特定资源的访问。不幸的是,没有简单的方法可以使用访问控制(IAM)来实现这一点,而且这很糟糕。
无论如何,我认为你已经走在正确的轨道上,但我认为这还取决于该组中的用户可以访问什么。例如,这是我几个月前做的一个示例,其中组中的所有用户都可以读取 Azure 中的所有内容(所有资源),除了一些资源类型*。
{
"Name": "Limited_Reader",
"IsCustom": true,
"Description": "Gives you READ-ONLY access to everything, except a few resource types.",
"Actions": [
"*/read"
],
"NotActions": [
"Microsoft.Storage/*",
"Microsoft.KeyVault/*",
"Microsoft.Network/networkSecurityGroups/*"
],
"DataActions": [
],
"NotDataActions": [
],
"AssignableScopes": [
"/subs/*****
]
}
因此,这赋予了他们对 Azure 中所有内容的只读访问权限,但他们无法对上述资源类型执行任何操作。如果您需要对其他所有内容进行写访问,只需找到适当的权限(我认为这是您已经拥有的 - */write 和 */delete)。
旁注:微软对此问题的官方解决方案似乎是称为 Azure Blueprints 的东西,他们几周前刚刚发布,但我对该工具并不了解。