Αυτό το άρθρο εξετάζει τη χρήση των δικαιωμάτων Microsoft Graph σε εγγραφές εφαρμογών Azure και εάν πρέπει να χρησιμοποιήσετε το Graph σε συγκεκριμένους τύπους εγγραφών εφαρμογών Azure και εάν είναι εντάξει να τα εκθέσετε με άλλα πεδία και ρόλους. Είναι εντάξει να εκτίθενται τα δικαιώματα Graph σε δημόσιες εγγραφές εφαρμογών Azure;
Χρήση γραφήματος με δημόσιες εφαρμογές
Κατά κανόνα, δεν επιτρέπω την εκχώρηση δικαιωμάτων γραφήματος σε μια εγγραφή εφαρμογής Azure που χρησιμοποιείται από μια δημόσια εφαρμογή, εκτός από την ανάθεση Χρήστης.Διαβάστε άδεια ή άλλα παρόμοια. Το πρόβλημα με την κοινή χρήση άδειας Γραφήματος με αυτόν τον τρόπο είναι ότι επιτρέπετε την κοινή χρήση της πλήρους άδειας και όχι μόνο της συγκεκριμένης περίπτωσης χρήσης από την εφαρμογή σας. Για παράδειγμα, αν εκθέσω το Χρήστης.ReadWrite.All άδεια σε μια δημόσια εγγραφή της εφαρμογής Azure, οποιοσδήποτε αποκτά ένα διακριτικό πρόσβασης για αυτήν την άδεια μπορεί να κάνει ό,τι επιτρέπεται. Η εφαρμογή μου μπορεί να χρειάζεται μόνο να επιτρέψει σε έναν χρήστη να ενημερώσει το όνομα, επίθετο ιδιότητες. Με αυτό το διακριτικό, θα μπορούσα να απαριθμήσω όλους τους χρήστες σε αυτόν τον μισθωτή και να το μοιραστώ με εχθρικό τρόπο ή να δημιουργήσω και να διαγράψω χρήστες.
Εάν βρείτε μια δημόσια εγγραφή Azure App και δικαιώματα γραφήματος εκτός από το Χρήστης.Διαβάστε εύρος, πιθανότατα έχετε εντοπίσει μια πιθανότητα επίθεσης ασφαλείας ή πρόβλημα αξιολόγησης δικαιωμάτων.
Μια καλύτερη ρύθμιση είναι να διαχωρίσετε τις άδειες Graph σε μια διαφορετική εγγραφή εφαρμογής Azure και να επιτρέψετε τη χρήση της μόνο σε έναν εμπιστευτικό πελάτη.

Χρήση του γραφήματος με την εφαρμογή Εγγραφές εφαρμογών
Όταν χρησιμοποιώ δικαιώματα εφαρμογής Graph, δημιουργώ μια συγκεκριμένη εγγραφή εφαρμογής Azure για να εκθέσω τα δικαιώματα που απαιτούν ένα μυστικό ή πιστοποιητικό για την απόκτηση του διακριτικού πρόσβασης. Δεν πρέπει να το μοιραστείτε με μια εγγραφή εφαρμογής Azure που χρησιμοποιείται για την έκθεση διαφορετικών API. Εάν το χρησιμοποιείτε μόνο μέσα σε ένα συγκεκριμένο εμπιστευτικό πρόγραμμα-πελάτη Ιστού το οποίο δεν χρησιμοποιείται για την έκθεση περαιτέρω API, τότε είναι εντάξει να μοιραστείτε τα δικαιώματα Graph και τους εμπιστευτικούς ορισμούς του προγράμματος-πελάτη στην ίδια εγγραφή της εφαρμογής Azure.
Ποτέ δεν συνδυάζω δικαιώματα εφαρμογών και άδειες ανάθεσης στην ίδια εγγραφή της εφαρμογής Azure. Εάν διαπιστώσετε ότι το κάνετε αυτό, είναι πιθανότατα το αποτέλεσμα ενός σφάλματος αρχιτεκτονικής και θα πρέπει να επανεξεταστεί.
Διαχωρισμός αδειών γραφήματος και εγγραφές εφαρμογών λύσεων
Όταν χρησιμοποιείτε μια εγγραφή Εφαρμογής Azure για να χρησιμοποιήσετε έναν συγκεκριμένο ρόλο ή εύρος API, μην χρησιμοποιείτε το ίδιο για να εκθέσετε μια άδεια Γραφήματος. Αυτό συμβαίνει επειδή ο σκοπός της εγγραφής της εφαρμογής Azure είναι να κάνει ό,τι επιτρέπεται στο API που εκτίθεται χρησιμοποιώντας αυτό. Εάν επιτρέπετε επίσης δικαιώματα γραφήματος, οι εγγραφές εφαρμογών μπορούν να χρησιμοποιηθούν για δύο διαφορετικές προθέσεις. Ο πελάτης που χρησιμοποιεί αυτό θα μπορούσε να εκτελέσει μια αξιολογημένη επίθεση προνομίων καθώς το ίδιο μυστικό/πιστοποιητικό μπορεί να χρησιμοποιηθεί για την απόκτηση και των δύο αδειών ή ακόμα χειρότερα, δεν απαιτείται κανένα μυστικό για τη λήψη διακριτικού πρόσβασης για το Graph API.
Ίσως δεν θέλετε να επιτρέψετε στον πελάτη που χρησιμοποιεί το API να έχει πλήρη πρόσβαση σε οτιδήποτε εκτίθεται με την άδεια Γραφήματος. Πιθανότατα θέλετε να εκθέσετε μόνο ένα υποσύνολο. Αυτό μπορεί να επιλυθεί χρησιμοποιώντας ένα API που επικυρώνει το συγκεκριμένο αίτημα και σε ένα αξιόπιστο περιβάλλον και τα δικαιώματα γραφήματος από μια ξεχωριστή εγγραφή Εφαρμογής Azure μπορούν να χρησιμοποιηθούν με έναν εμπιστευτικό πελάτη και μόνο το υποσύνολο των δυνατοτήτων του Γραφήματος εκτίθεται στο τρίτο μέρος. Πρέπει να απαιτείται ένα μυστικό ή πιστοποιητικό για να λάβετε το διακριτικό πρόσβασης για την άδεια Γραφήματος. Δεν είναι δυνατό για την εφαρμογή τρίτου μέρους να λάβει ένα διακριτικό πρόσβασης για την άδεια Γραφήματος.
Τι γίνεται με την κοινή χρήση δικαιωμάτων γραφήματος και εφαρμογών τρίτων
Τα δικαιώματα κοινής χρήσης γραφήματος σε πελάτες τρίτων είναι η κοινή χρήση εμπιστοσύνης. Θα το απέφευγα όσο το δυνατόν περισσότερο και θα χρησιμοποιούσα μια στρατηγική μηδενικής εμπιστοσύνης. Εκθέστε ή μοιραστείτε μόνο ό,τι απαιτείται. Πόσο ασφαλή είναι τα μυστικά ή τα πιστοποιητικά στις άλλες λύσεις; Πόσο εύκολο είναι να περιστρέψετε τα μυστικά;
Συνδέσεις:
https://learn.microsoft.com/en-us/graph/tutorials
https://learn.microsoft.com/en-us/training/modules/msgraph-dotnet-core-show-user-emails/
https://developer.microsoft.com/en-us/graph/
https://github.com/AzureAD/microsoft-identity-webhttps://learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow
https://learn.microsoft.com/en-us/graph/permissions-reference
https://posts.specterops.io/azure-privilege-escalation-via-azure-api-permissions-abuse-74aee1006f48
https://learn.microsoft.com/en-us/azure/active-directory/develop/secure-least-privileged-access