溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用PowerShell 獲取 Azure賬戶中的用戶權(quán)限分配情況

發(fā)布時(shí)間:2020-07-10 02:56:28 來(lái)源:網(wǎng)絡(luò) 閱讀:3557 作者:mxy00000 欄目:云計(jì)算

    今天再來(lái)分享一篇關(guān)于PowerShell的文章,這次分享的腳本主要是用來(lái)獲取Azure中用戶權(quán)限分配的情況,原始的需求是因?yàn)楣続zure賬戶因?yàn)闄?quán)限分配混亂,導(dǎo)致了一些不該發(fā)生的事情,所以需要重新整理所有的用戶權(quán)限分配情況,重新進(jìn)行梳理和規(guī)整,這種情況下,了解當(dāng)前的權(quán)限分配情況就非常重要了。一般情況下,Azure可以根據(jù)RBAC的方式進(jìn)行權(quán)限分配,這個(gè)是很方便的,簡(jiǎn)單介紹下RBAC的概念吧

    

     RBAC概念

     使用 RBAC,可以在團(tuán)隊(duì)中實(shí)現(xiàn)職責(zé)分離,僅向用戶授予執(zhí)行作業(yè)所需的訪問(wèn)權(quán)限。 無(wú)需向每個(gè)人授予 Azure 訂閱或資源的無(wú)限制權(quán)限,可以?xún)H允許在特定的范圍執(zhí)行某些操作。

規(guī)劃訪問(wèn)控制策略時(shí),最佳做法是授予用戶完成工作所需的最低權(quán)限。 下圖顯示了與 RBAC 使用有關(guān)的建議模式。




    使用PowerShell 獲取 Azure賬戶中的用戶權(quán)限分配情況



    使用 RBAC 控制資源訪問(wèn)權(quán)限的方式是創(chuàng)建角色分配。 這是一個(gè)需要理解的重要概念 — 它涉及到如何強(qiáng)制實(shí)施權(quán)限。 角色分配包含三個(gè)要素:安全主體、角色訂閱和范圍。



    安全主體

    安全主體是一個(gè)對(duì)象,表示請(qǐng)求訪問(wèn) Azure 資源的用戶、組、服務(wù)主體或托管標(biāo)識(shí)。


    使用PowerShell 獲取 Azure賬戶中的用戶權(quán)限分配情況




  • 用戶 - 在 Azure Active Directory 中具有配置文件的人員。 也可以將角色分配到其他租戶中的用戶。 有關(guān)其他組織中的用戶的信息,請(qǐng)參閱 Azure Active Directory B2B。

  • 組 - 在 Azure Active Directory 中創(chuàng)建的一組用戶。 將某個(gè)角色分配到某個(gè)組時(shí),該組中的所有用戶都擁有該角色。

  • 服務(wù)主體 - 應(yīng)用程序或服務(wù)用來(lái)訪問(wèn)特定 Azure 資源的安全標(biāo)識(shí)。 可將服務(wù)主體視為應(yīng)用程序的用戶標(biāo)識(shí)(用戶名和密碼或證書(shū))。

  • 托管標(biāo)識(shí) - Azure Active Directory 中由 Azure 自動(dòng)托管的標(biāo)識(shí)。 在開(kāi)發(fā)云應(yīng)用程序時(shí),通常使用托管標(biāo)識(shí)來(lái)管理用于向 Azure 服務(wù)進(jìn)行身份驗(yàn)證的憑據(jù)。


    角色

    

    

    使用PowerShell 獲取 Azure賬戶中的用戶權(quán)限分配情況




    

Azure 包含多個(gè)可用的內(nèi)置角色。 下面列出了四個(gè)基本的內(nèi)置角色。 前三個(gè)角色適用于所有資源類(lèi)型。

  • 所有者 - 擁有對(duì)所有資源的完全訪問(wèn)權(quán)限,包括將訪問(wèn)權(quán)限委派給其他用戶的權(quán)限。

  • 參與者 - 可以創(chuàng)建和管理所有類(lèi)型的 Azure 資源,但無(wú)法將訪問(wèn)權(quán)限授予其他用戶。

  • 讀取者 - 可以查看現(xiàn)有的 Azure 資源。

  • 用戶訪問(wèn)管理員 - 允許你管理用戶對(duì) Azure 資源的訪問(wèn)。



    范圍


    范圍是訪問(wèn)權(quán)限適用于的資源集。 分配角色時(shí),可以通過(guò)定義范圍來(lái)進(jìn)一步限制允許的操作。 如果你想要將某人分配為網(wǎng)站參與者,但只針對(duì)一個(gè)資源組執(zhí)行此分配,則使用范圍就很有幫助。

在 Azure 中,可在多個(gè)級(jí)別指定范圍:管理組、訂閱、資源組或資源。 范圍采用父子關(guān)系結(jié)構(gòu)。

使用PowerShell 獲取 Azure賬戶中的用戶權(quán)限分配情況



在父范圍授予訪問(wèn)權(quán)限時(shí),這些權(quán)限會(huì)繼承到子范圍。 例如:

  • 如果將所有者角色分配給管理組范圍的用戶,則該用戶可以在管理組中管理所有訂閱中的一切內(nèi)容。

  • 如果在訂閱范圍向某個(gè)組分配了讀取者角色,則該組的成員可以查看訂閱中的每個(gè)資源組和資源。

  • 如果在資源組范圍向某個(gè)應(yīng)用程序分配了參與者角色,則該應(yīng)用程序可以管理該資源組中所有類(lèi)型的資源,但不能管理訂閱中的其他資源組資源。


  角色分配是出于授予訪問(wèn)權(quán)限的目的,將角色定義附加到特定范圍內(nèi)的用戶、組、服務(wù)主體或托管標(biāo)識(shí)的過(guò)程。 通過(guò)創(chuàng)建角色分配來(lái)授予訪問(wèn)權(quán)限,通過(guò)刪除角色分配來(lái)撤銷(xiāo)訪問(wèn)權(quán)限。 

  下圖顯示了角色分配的示例。 在此示例中,為“營(yíng)銷(xiāo)”組分配了醫(yī)藥銷(xiāo)售資源組的參與者角色。 這意味著,“營(yíng)銷(xiāo)”組中的用戶可以在醫(yī)藥銷(xiāo)售資源組中創(chuàng)建或管理任何 Azure 資源。 “營(yíng)銷(xiāo)”用戶無(wú)權(quán)訪問(wèn)醫(yī)藥銷(xiāo)售資源組外部的資源,除非他們屬于另一個(gè)角色分配。

使用PowerShell 獲取 Azure賬戶中的用戶權(quán)限分配情況


 基本上RBAC的概念已經(jīng)簡(jiǎn)單介紹過(guò)了,我們也是通過(guò)RBAC的方式進(jìn)行權(quán)限分配的,如果想了解權(quán)限分配的情況,可以運(yùn)行以下的腳本

      

function Write-DateTimeMessage {
    param (
        [parameter(Mandatory = $false)]
        [switch]$Warning,
        [parameter(Mandatory = $true)]
        [string]$Message,
        [parameter(Mandatory = $false)]
        [string]$ForegroundColor
        
    )
    
    
    if ($Warning) {
        Write-Warning ($(Get-Date -UFormat '%Y/%m/%d %H:%M:%S') + " * " + $Message)
    }
    else {
        if ($ForegroundColor) {
            Write-Host ($(Get-Date -UFormat '%Y/%m/%d %H:%M:%S') + " * " + $Message) -ForegroundColor $ForegroundColor
        }
        else {
            Write-Host ($(Get-Date -UFormat '%Y/%m/%d %H:%M:%S') + " * " + $Message)
        }
    }
    
}


[pscustomobject[]]$UserObjects = $null
    
Get-AzureRmADUser | % {
    $User = $_
    Write-DateTimeMessage -Message "Checking User $($User.UserPrincipalName)"
    


    $RoleAssignments = Get-AzureRmRoleAssignment -SignInName $User.UserPrincipalName
        
    if ($null -ne $RoleAssignments) {
            
        $RoleAssignments | % {
            $RoleAssignment = $_
             
            $UserObject = New-Object -TypeName psobject
            $UserObject | Add-Member -MemberType NoteProperty -Name DisplayName -Value $RoleAssignment.DisplayName
            $UserObject | Add-Member -MemberType NoteProperty -Name SignInName -Value $RoleAssignment.SignInName
            $UserObject | Add-Member -MemberType NoteProperty -Name Scope -Value $RoleAssignment.Scope
            $UserObject | Add-Member -MemberType NoteProperty -Name RoleDefinitionName -Value $RoleAssignment.RoleDefinitionName
            $UserObject | Add-Member -MemberType NoteProperty -Name ObjectType -Value $RoleAssignment.ObjectType
            $UserObject | Add-Member -MemberType NoteProperty -Name CanDelegate -Value $RoleAssignment.CanDelegate
            $UserObject | Add-Member -MemberType NoteProperty -Name RoleDefinitionId -Value $RoleAssignment.RoleDefinitionId
            $UserObject | Add-Member -MemberType NoteProperty -Name ObjectId -Value $RoleAssignment.ObjectId
            $UserObjects += $UserObject
            
                
        }
    }else{

        Write-DateTimeMessage "No role assignment for user $($User.DisplayName)" -Warning

    }
        
        
}
    


$OutputPath = Join-Path -Path ([Environment]::GetFolderPath("Desktop")) -ChildPath ("AzureUserPermission-" + $(Get-Date -Format "yyyyMMdd-HHmmss") + ".csv")

if ($null -ne $UserObjects) {
    
    $UserObjects | Export-Csv -NoTypeInformation -LiteralPath $OutputPath
    Write-DateTimeMessage -Message "Please check $OutputPath" -Warning
}
else {
    Write-DateTimeMessage  "Maybe no user in the environment or didn't get information, please check" -warning
}

腳本沒(méi)有任何的參數(shù),直接運(yùn)行即可,運(yùn)行的效果大概如下

使用PowerShell 獲取 Azure賬戶中的用戶權(quán)限分配情況

運(yùn)行完成后,會(huì)在你的桌面生成一個(gè)csv文件,里邊會(huì)記錄這些信息

使用PowerShell 獲取 Azure賬戶中的用戶權(quán)限分配情況


  


    



向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI