PowerShell का उपयोग करके प्रत्यायोजित सहमति-प्राप्त अनुमतियाँ कैसे जोड़ें या हटाएँ

Microsoft वातावरण में एप्लिकेशन के लिए डेलीगेटेड अनुमतियाँ प्रबंधित करना एडमिनिस्ट्रेटर के लिए एक महत्वपूर्ण काम है। यह मार्गदर्शिका एक Microsoft Graph PowerShell स्क्रिप्ट प्रदान करती है, जिससे आप अधिक बारीकी और नियंत्रण के साथ डेलीगेटेड अनुमतियाँ जोड़ या हटा सकते हैं।


डेलीगेटेड अनुमतियाँ क्यों बदलें?

डेलीगेटेड अनुमतियाँ किसी एप्लिकेशन को साइन-इन किए हुए उपयोगकर्ता की ओर से काम करने देती हैं। हालाँकि, कुछ परिस्थितियों में आपको इन अनुमतियों को बदलने की ज़रूरत पड़ सकती है:

  • सुरक्षा कारणों से अनावश्यक या अत्यधिक अनुमतियाँ हटाने के लिए।
  • एप्लिकेशन की कार्यक्षमता के लिए आवश्यक नई अनुमतियाँ जोड़ने के लिए।
  • API एक्सेस से जुड़ी समस्याओं का निवारण करने के लिए।

नोट: यहाँ दी गई स्क्रिप्ट अनुमतियों पर बारीक नियंत्रण देती है और उन्नत परिदृश्यों के लिए आदर्श है।


PowerShell स्क्रिप्ट: डेलीगेटेड अनुमतियाँ जोड़ें या हटाएँ

डेलीगेटेड अनुमतियाँ प्रबंधित करने के लिए पूरी PowerShell स्क्रिप्ट यहाँ है:

कॉन्फ़िगरेशन अनुभाग

# CONFIGURATION

# Application ID of app
$appId= "YOUR_APP_ID"

# Uncomment below line if you want to modify user consent
# $UserId = [email protected]

# Microsoft Graph App ID (DO NOT CHANGE)
# AAD Graph App Id: "00000002-0000-0000-c000-000000000000"
# MS Graph App Id: "00000003-0000-0000-c000-000000000000"
$resourceId= "00000003-0000-0000-c000-000000000000"

# Delegated Permissions you want on this service principal
$AddPermissions = @(
    "User.Read"
)

$RemovePermissions = @(
    "Mail.Send",
    "Group.ReadWrite.All"
)

मुख्य स्क्रिप्ट

# Connect to Microsoft Graph PowerShell
Connect-MgGraph -Scopes "Directory.Read.All DelegatedPermissionGrant.ReadWrite.All"

$appPrincipal = Get-MgServicePrincipal -Filter "appId eq '$($appId)'"
$ResourceServicePrincipal = Get-MgServicePrincipal -Filter "appId eq '$($resourceId)'"
$UserPrincipal = Get-MgUser -UserId $UserId

# Find grant if one already exists
if($UserId) {
    $grants = Get-MgOauth2PermissionGrant -Filter "clientId eq '$($appPrincipal.id)' and resourceId eq '$($ResourceServicePrincipal.id)' and principalId eq '$($UserPrincipal.id)'"
} else {
    $grants = Get-MgOauth2PermissionGrant -Filter "clientId eq '$($appPrincipal.id)' and resourceId eq '$($ResourceServicePrincipal.id)'"
}

# Update existing grant
$RemovePermissions += $AddPermissions
foreach($grant in $grants) {
    # Remove permissions from grant
    foreach($permission in $RemovePermissions) {
        Write-Host "Removing: $($permission)"
        # Remove permission from grant
        $grant.scope = $grant.scope.Replace($permission, "")
    }

    # Add permissions to grant
    foreach($permission in $AddPermissions) {
        $grant.scope += $permission + " "
    }

    # Update existing Grant
    Update-MgOauth2PermissionGrant -Oauth2PermissionGrantId $grant.id -Scope $grant.scope.Trim()
}

# Create grant if none exists
if(!$grants) {
    $ScopeString = $AddPermissions -join " "
    if($UserId) {
        New-MgOauth2PermissionGrant -ClientId $appPrincipal.id -ResourceId $ResourceServicePrincipal.id -Scope $ScopeString -ConsentType Principal -PrincipalId $UserPrincipal.id
    } else {
        New-MgOauth2PermissionGrant -ClientId $appPrincipal.id -ResourceId $ResourceServicePrincipal.id -Scope $ScopeString -ConsentType AllPrincipals
    }
}

एडमिनिस्ट्रेटर के लिए मुख्य नोट्स

  1. पूर्व-आवश्यकताएँ:
    • नवीनतम संस्करण इंस्टॉल करें: Microsoft Graph PowerShell SDK.
    • सुनिश्चित करें कि आपके पास डेलीगेटेड अनुमतियाँ प्रबंधित करने के लिए आवश्यक अनुमतियाँ हैं (Directory.Read.All और DelegatedPermissionGrant.ReadWrite.All).
  2. स्क्रिप्ट को कस्टमाइज़ करना:
    • प्लेसहोल्डर YOUR_APP_ID को उस ऐप की एप्लिकेशन ID से बदलें जिसे आप प्रबंधित करना चाहते हैं।
    • निम्नलिखित $AddPermissions और $RemovePermissions सरणियों को संशोधित करें ताकि उनमें वे अनुमतियाँ शामिल हों जिन्हें आप जोड़ना या हटाना चाहते हैं।
  3. उपयोगकर्ता बनाम एप्लिकेशन अनुमतियाँ:
    • यदि आप किसी विशिष्ट उपयोगकर्ता की अनुमतियाँ संशोधित कर रहे हैं, तो अनकमेंट करके $UserId को उस उपयोगकर्ता के ईमेल पते पर सेट करें।
    • यदि आप सभी उपयोगकर्ताओं की अनुमतियाँ प्रबंधित कर रहे हैं, तो $UserId को कमेंट किया हुआ ही रहने दें।
  4. स्क्रिप्ट का परीक्षण:
    • स्क्रिप्ट को प्रोडक्शन में चलाने से पहले, उसे नॉन-प्रोडक्शन वातावरण में टेस्ट करें ताकि यह सुनिश्चित हो सके कि वह अपेक्षा के अनुसार काम करती है।

उदाहरण उपयोग मामले

  • अनुमतियाँ जोड़ना: जोड़ें: User.Read ताकि ऐप बुनियादी उपयोगकर्ता प्रोफ़ाइल जानकारी तक पहुँच सके।
  • अनुमतियाँ हटाना: हटाएँ: Mail.Send ताकि ऐप उपयोगकर्ताओं की ओर से ईमेल न भेज सके।
  • बारीक नियंत्रण: कुशल प्रबंधन के लिए अनुमतियाँ जोड़ने और हटाने को एक ही स्क्रिप्ट में मिलाएँ।

टिप्पणी छोड़ें