Χρήση λογαριασμών Azure Active Directory με συνδρομή συνδεδεμένη με προσωπικό (γνωστό και ως Live) λογαριασμό

1
Χρήση λογαριασμών Azure Active Directory με συνδρομή συνδεδεμένη με προσωπικό (γνωστό και ως Live) λογαριασμό

Αυτή η ανάρτηση ιστολογίου αφορά ένα πολύ συγκεκριμένο πρόβλημα που μπορεί να έχετε με ορισμένες υπηρεσίες Azure, εάν η συνδρομή σας στο Azure είναι συνδεδεμένη με έναν προσωπικό λογαριασμό και όχι με ταυτότητα του Office 365 ή του Microsoft 365. Και το σύνολο των υπηρεσιών Azure δεν είναι τυχαίο. Είναι ένα σύνολο υπηρεσιών Azure που βασίζονται σε μια υπηρεσία καταλόγου Active Directory Azure για τη διαχείριση διαπιστευτηρίων – που αναφέρεται ως Managed Identity.

Αντιμετώπισα αυτό όταν εργάζομαι με το Azure Key Vault, αλλά μπορεί να το πετύχετε με το Azure Blob Storage ή κάποιες άλλες υπηρεσίες.

Θέλω πρώτα να περιγράψω πώς έχουν ρυθμιστεί οι λογαριασμοί μου Microsoft και Azure και πώς αντιμετώπισα το πρόβλημα και στη συνέχεια να μοιραστώ πώς μπόρεσα να το λύσω.

Έχω γράψει επίσης ένα άρθρο σχετικά με τη χρήση του Azure Key Vault από μια εφαρμογή ASP.NET Core, αλλά επέλεξα μια απλούστερη διαδρομή για το άρθρο που ήταν να χρησιμοποιήσω μια συνδρομή Azure που ήταν συνδεδεμένη με έναν λογαριασμό Office 365. Αυτό το άρθρο βρίσκεται στο περιοδικό Code Magazine Μάιος/Ιούνιος 2021. (Θα κοινοποιήσω τον σύνδεσμο όταν είναι ζωντανός). Σε αυτήν την ανάρτηση ιστολογίου θα εστιάσω στο πρόβλημα του προσωπικού λογαριασμού. Μπορείτε να βρείτε λεπτομέρειες σχετικά με την πρόσβαση στο Key Vault από την εφαρμογή στο άρθρο.

Οι λογαριασμοί μου Microsoft και Azure

Ο λογαριασμός μου συνδρομητής Azure είναι ο προσωπικός μου λογαριασμός Microsoft που σχετίζεται με το live.com. Δεν είναι διεύθυνση email live.com. Βλέπετε τη μεγάλη διαφορά όταν συνδέεστε σε μια ιδιοκτησία της Microsoft. Εισαγάγετε τη διεύθυνση email σας και, στη συνέχεια, προσδιορίζετε ότι πρόκειται είτε για λογαριασμό εργασίας/σχολείου είτε για προσωπικό λογαριασμό. Ο δικός μου είναι ένας από αυτούς τους προσωπικούς λογαριασμούς.

Συνδέομαι στο visualstudio.com, στη συνδρομή μου στο Visual Studio και στον λογαριασμό μου Microsoft MVP με τον ίδιο προσωπικό λογαριασμό. Δουλεύω με αυτόν τον τρόπο εδώ και πολύ καιρό.

Εργασία με μια υπηρεσία που εξαρτάται από την υπηρεσία καταλόγου Active Directory Azure: Azure Key Vault

Έγραφα μια μικρή εφαρμογή ASP.NET Core και ήθελα να αποθηκεύσω τα μυστικά της – κάποιες συμβολοσειρές σύνδεσης – σε ένα Azure Key Vault για να τα κρατήσω μακριά από τον πηγαίο κώδικα μου.

Ξεκίνησα δημιουργώντας ένα θησαυροφυλάκιο κλειδιών στο Azure. Τα θησαυροφυλάκια κλειδιών είναι προσβάσιμα μέσω ενός πολιτική πρόσβασης — ένας συνδυασμός χρήστη του Azure Active Directory και ενός επιλεγμένου συνόλου δικαιωμάτων. Όταν δημιουργείτε ένα νέο Key Vault και ο συνδρομητικός λογαριασμός σας Azure είναι λογαριασμός O365, θα δημιουργηθεί αυτόματα μια νέα πολιτική πρόσβασης που δίνει στην ταυτότητα του λογαριασμού συνδρομητή ευρεία πρόσβαση σε αυτό το θησαυροφυλάκιο κλειδιών. Επειδή η συνδρομή μου δεν ήταν συνδεδεμένη με ταυτότητα O365, έπρεπε να δημιουργήσω με μη αυτόματο τρόπο μια πολιτική πρόσβασης για τον χρήστη που είναι ο κάτοχος της συνδρομής.

Πίσω στο Visual Studio, έπλεξα το πακέτο Azure.Extensions.Aspnetcore.Configuration.Secrets στην εφαρμογή μου για να το αφήσω να διαβάζει από το θησαυροφυλάκιο κλειδιών. Αυτό απαιτεί επίσης αναφορά στο πακέτο Azure.Identity NuGet.

Το μυστικό API ζητά από το API ταυτότητας να ανακαλύψει τυχόν διαχειριζόμενες ταυτότητες στον υπολογιστή σας, εάν δεν τροφοδοτούνται απευθείας στην εφαρμογή.

Ακολουθεί ο κρίσιμος κώδικας για την πρόσβαση στο θησαυροφυλάκιο κλειδιών που πρόσθεσα στην εφαρμογή μου:

config.AddAzureKeyVault(
   new Uri("https://fourtwentyfive.vault.azure.net"),
   
new DefaultAzureCredential());

Αυτό λέει στην εφαρμογή μου να επικοινωνεί με το συγκεκριμένο μου Azure Key Vault και να χρησιμοποιεί όποια διαπιστευτήρια μπορεί να βρει. Στην περίπτωσή μου, ο εντοπισμός σφαλμάτων στο Visual Studio, είναι τα διαπιστευτήρια που χρησιμοποίησα για να συνδεθώ στο Visual Studio.

The Error of My Ways

Και εδώ αρχίζει το πρόβλημα! Όταν το πρόγραμμα εντοπισμού σφαλμάτων επιχειρεί να αποκτήσει πρόσβαση στο θησαυροφυλάκιο κλειδιών με αυτά τα διαπιστευτήρια, δημιουργεί ένα σφάλμα.

Azure.Identity.AuthenticationFailedException: 'SharedTokenCacheCredential authentication failed: AADSTS9002332: Application ‘[application’s id]'(Azure Key Vault) is configured for use by Azure Active Directory users only. Please do not use the /consumers endpoint to serve this request.

Αυτό οφείλεται στο γεγονός ότι, παρόλο που το θησαυροφυλάκιο κλειδιών δημιούργησε μια πολιτική πρόσβασης με τον λογαριασμό μου Live, είναι μια παγίδα. Δεν θα λειτουργήσει. Το Azure Active Directory δεν μπορεί να διαχειριστεί λογαριασμούς Live. Μπορεί να διαχειριστεί μόνο λογαριασμούς Office 365 ή Microsoft 365. Τελεία.

Έχω λογαριασμό O365. Αλλά δεν ήθελα να αλλάξω τον λογαριασμό συνδρομητή μου σε μία από τις δύο ταυτότητές μου που είναι συνδεδεμένες με τον λογαριασμό μου O365, επειδή φοβάμαι ότι δεν θα χαλάσω όλα όσα εξαρτώνται από την παλιά μου σύνδεση στο Live – την πρόσβασή μου στο MVP, την πρόσβασή μου στο visualstudio.com κ.λπ.

Επομένως, χρειάστηκε να προσθέσω μία από τις ταυτότητες του Office 365 στον κατάλογό μου Azure Active.

Συνδέοντας μια ταυτότητα O365 με τη συνδρομή μου στο Azure

Έχω δύο ταυτότητες στον λογαριασμό μου στο O365 – julia και jlerman. Ο λογαριασμός jlerman έχει την ίδια ακριβή διεύθυνση email με τον λογαριασμό μου Live. Επιτρέψτε με να σας βοηθήσω να αποφύγετε να υποφέρετε από μια άλλη αποτυχία. Μην προσπαθήσετε να προσθέσετε μια ταυτότητα O365 που έχει την ίδια διεύθυνση email με την προσωπική ταυτότητα. Αυτός ήταν ο πρώτος δρόμος που επέλεξα. Ο κωδικός απέτυχε στο ίδιο σημείο, αλλά αυτή τη φορά έλαβα ένα αποτέλεσμα σφάλματος HTTP 401 — Μη εξουσιοδοτημένη πρόσβαση πελάτη.

Αλλά είχα επιτυχία όταν χρησιμοποιούσα την άλλη μου ταυτότητα: τη Τζούλια.

Το πώς να το κάνω αυτό ήταν περίπλοκο και δεν θα το είχα καταλάβει ποτέ μόνος μου. Είμαι ευγνώμων για την καθοδήγηση από έναν συνάδελφο περιφερειακό διευθυντή της Microsoft, τον Joe Homnick, (rd.microsoft.com/en-us/joe-homnick) που είναι πολύ πιο έμπειρος με την ασφάλεια Azure από ό,τι θέλω να είμαι ποτέ! Στην πραγματικότητα, δεν κατάλαβα πολύ καλά το πρόβλημα και είμαι σίγουρος ότι η εξήγησή μου σε αυτόν ήταν πολύ παραπλανητική, αλλά μπόρεσε να καταλάβει τι προσπαθούσα να περιγράψω. Δυστυχώς, ο Τζο δεν μπορούσε απλώς να μου υποδείξει ένα έγγραφο γιατί προφανώς δεν υπάρχει. Μου κατέγραψε τα βήματα σε ένα email μαζί με στιγμιότυπα οθόνης. Αυτός είναι φίλος!

Έτσι, το υπόλοιπο αυτής της ανάρτησης ιστολογίου απλώς μεταδίδει αυτό που μου δίδαξε ο Τζο.

Επίσης, το κάνω αυτό μέσω της πύλης Azure αντί για πολλές μυστηριώδεις εντολές Azure CLI. Αλλά μπορείτε να επιτύχετε το ίδιο χρησιμοποιώντας το Azure CLI ή το PowerShell.

Βήμα 1: Προσθήκη της διεύθυνσης email O365 ως επισκέπτης χρήστης με δικαιώματα Global Administrator

Στην πύλη, μεταβείτε στην υπηρεσία καταλόγου Active Directory Azure και, στη συνέχεια, στο Users.

  • Επιλέξτε Νέος επισκέπτης χρήστης
  • Επιλέξτε Δημιουργία χρήστη. (Όχι „πρόσκληση χρήστη“).
  • Στην ενότητα ταυτότητα, προσθέστε ένα όνομα χρήστη. Τηλεφώνησα στο δικό μου julia365. Το Azure θα συμπληρώσει το όνομα τομέα που συνδέεται με τον Azure Active Directory της συνδρομής σας.
  • Δώστε στον χρήστη σας ένα όνομα. Το δικό μου είναι το „Julia 365“. Xoru5917
  • Ορίστε έναν κωδικό πρόσβασης για αυτόν τον χρήστη. Μπορείτε να αφήσετε την πύλη να δημιουργεί αυτόματα ή να παρέχει τη δική σας.
  • Η μόνη άλλη εργασία (σημαντική) σε αυτήν τη σελίδα είναι να ορίσετε έναν ρόλο για αυτόν τον χρήστη. Κάντε κλικ στο Χρήστης δίπλα στην επιλογή Ρόλοι και φιλτράρετε στο καθολικό για να επιλέξετε Καθολικός διαχειριστής.

Στη συνέχεια, μπορείτε να δημιουργήσετε τον χρήστη.

Το κύριο όνομα χρήστη θα έχει αστεία εμφάνιση. Μορφοποιείται ως διεύθυνση email με το όνομα του χρήστη (χωρίς κενά) και ο τομέας είναι μια συμπιεσμένη έκδοση της ταυτότητας για τη συνδρομή και, στη συνέχεια, onmicrosoft.com.

Έτσι εάν η ταυτότητα συνδρομητή μου είναι [email protected]το κύριο όνομα του νέου χρήστη θα είναι [email protected] Δεν είναι διεύθυνση email, απλώς ταυτότητα.

Ο εκδότης ταυτότητας είναι επίσης το jlermansomedomain.onmicrosoft.com.

Βήμα 2: Προσθήκη του νέου επισκέπτη ως δευτερεύοντος κατόχου συνδρομής στον λογαριασμό

Ωστόσο, η ύπαρξη του χρήστη δεν αρκεί για να πραγματοποιηθεί ο έλεγχος ταυτότητας. Ο χρήστης πρέπει να αναγνωρίζεται ως κάτοχος συνδρομής. Το Azure σάς επιτρέπει να ρυθμίσετε δευτερεύοντες κατόχους συνδρομών.

Θα πρέπει να ξεκινήσετε μεταβαίνοντας στις ιδιότητες συνδρομής. Μπορείτε να βρείτε τις Συνδρομές στη γραμμή αναζήτησης εάν χρειάζεται. Εάν έχετε πολλές συνδρομές, φροντίστε να επιλέξετε αυτή που σκοπεύετε να χρησιμοποιήσετε για την εφαρμογή σας. Μόλις μεταβείτε στις ιδιότητες συνδρομής, επιλέξτε την επιλογή Access Control (IAM). Στη συνέχεια, από το μενού του, Αναθέσεις ρόλων και μετά Προσθήκη.

Στη φόρμα Προσθήκη ανάθεσης ρόλου, επιλέξτε Κάτοχος από το αναπτυσσόμενο μενού Ρόλος. Αφήστε την επιλογή Εκχώρηση πρόσβασης στην προεπιλογή (Κύριο χρήστη, ομάδα ή υπηρεσία). Θα δείτε όλους τους χρήστες που αναφέρονται. Επιλέξτε το νέο που δημιουργήθηκε και, στη συνέχεια, αποθηκεύστε. Θα προστεθεί πολύ γρήγορα.

Βήμα 3: Συνδεθείτε στην πύλη με τη νέα ταυτότητα

Εάν κάνετε κλικ στα στοιχεία σύνδεσής σας στην επάνω δεξιά γωνία της πύλης, ενδέχεται να έχετε ήδη μια εύκολη επιλογή για μετάβαση στον νέο λογαριασμό για σύνδεση.

Διαφορετικά, θα πρέπει να αποσυνδεθείτε και να συνδεθείτε με τα νέα διαπιστευτήρια.

Βήμα 4: Προσθέστε τη νέα ταυτότητα στις πολιτικές πρόσβασης της υπηρεσίας.

Στην περίπτωσή μου, επέστρεψα στο θησαυροφυλάκιο κλειδιών και δημιούργησα μια νέα πολιτική πρόσβασης για τη νέα ταυτότητα.

Βήμα 5: Αλλάξτε τον χρήστη του Visual Studio στη νέα ταυτότητα για εκτέλεση/εντοπισμό σφαλμάτων από το VS

Αυτό είναι σημαντικό, καθώς να θυμάστε ότι κατά την εκτέλεση ή τον εντοπισμό σφαλμάτων από το Visual Studio, το Azure Managed Identities API θα διαβάσει αυτή τη σύνδεση ως πιθανή πηγή διαπιστευτηρίων. Θα πρέπει πρώτα να αποσυνδεθείτε και, στη συνέχεια, να συνδεθείτε ξανά με την άβολη ταυτότητα που δημιουργήσατε στο AAD. Με το παράδειγμά μου, αυτό θα ήταν [email protected]

Με αυτές τις αλλαγές, όχι μόνο ξεπέρασα τελικά αυτή την αποτυχημένη γραμμή κώδικα, αλλά η εφαρμογή μπήκε στο θησαυροφυλάκιο κλειδιών και διάβασε τα μυστικά μου (μια συμβολοσειρά σύνδεσης βάσης δεδομένων στην περίπτωσή μου) και μπόρεσε να χρησιμοποιήσει το μυστικό για να συνδεθεί στη βάση δεδομένων.

Ελπίζω αυτό να βοηθήσει κάποιον άλλο στο δρόμο!

Εγγραφείτε το ενημερωτικό δελτίο μου για να μην χάσετε τις ανακοινώσεις μου για το συνέδριο και τα μαθήματα Pluralsight!

Schreibe einen Kommentar