Πώς μπορείτε να μοιράζεστε ασφαλείς εφαρμογές με εξωτερικούς χρήστες

Δουλεύω με πολλούς συμβούλους που αναπτύσσουν πολύπλοκες & όμορφες εφαρμογές Shiny για πελάτες. Αυτές οι εφαρμογές περιέχουν ευαίσθητα δεδομένα που δεν πρέπει να δημοσιοποιούνται ή να πέφτουν σε λάθος χέρια, αλλά πρέπει να διατίθενται σε εξωτερικούς χρήστες που βρίσκονται εκτός του τείχους προστασίας της εταιρείας τους. Σε αυτήν την ανάρτηση, θα συζητήσω ορισμένες από τις βέλτιστες πρακτικές για την ασφαλή κοινή χρήση αυτών των εφαρμογών χρησιμοποιώντας τα επαγγελματικά προϊόντα της RStudio. Αυτά τα προ προϊόντα βασίζονται στη συνδρομή και σε αντίθεση με την έκδοση ανοιχτού κώδικα περιέχουν λειτουργίες ειδικά σχεδιασμένες για επιχειρήσεις (όπως η ενσωμάτωση auth), η οποία καθιστά πολύ πιο εύκολη την ανάπτυξη των εφαρμογών Shiny.

Αρχιτεκτονική μονής έναντι πολλαπλών μισθωτών

Μόλις αναπτύξετε μια εφαρμογή Shiny, το επόμενο βήμα είναι να το αναπτύξετε σε ένα διακομιστή φιλοξενίας όπως το RStudio Connect. Το RStudio Connect μπορεί να θεωρηθεί ως διακομιστής ιστού ειδικά σχεδιασμένος για να φιλοξενεί προϊόντα δεδομένων που δημιουργήθηκαν σε R όπως οι εφαρμογές Shiny, οι αναφορές R Markdown, API του Plumber, τα μοντέλα Tensorflow κ.ο.κ. Μόλις εγκατασταθεί στη σύνδεση, οι χρήστες μπορούν να πληκτρολογήσουν τη διεύθυνση URL της εφαρμογής σας στο πρόγραμμα περιήγησης ιστού τους όπως ακριβώς και οποιοσδήποτε άλλος ιστότοπος και να προβάλλουν την εφαρμογή, υποθέτοντας ότι τους έχετε δώσει πρόσβαση.

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

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

Πολυεπιχειρησιακές βέλτιστες πρακτικές

Είτε χρησιμοποιείτε το RStudio Connect, την de facto επιλογή για την κοινή χρήση R artifacts, είτε το παλαιότερο Shiny Server Pro, υπάρχουν μερικά χρήσιμα πράγματα που πρέπει να γνωρίζετε κατά την κοινή χρήση εφαρμογών με εξωτερικούς χρήστες. Πολλές από αυτές τις συστάσεις απαιτούν αλλαγές στις παγκόσμιες ρυθμίσεις του διακομιστή RStudio Connect ή του Shiny Server Pro, οπότε μιλήστε με το διαχειριστή του συστήματός σας εάν δεν έχετε δικαιώματα επεξεργασίας του αρχείου ρυθμίσεων όπου γίνεται διαχείριση αυτών των ρυθμίσεων.

Σύνδεση RStudio

Συμβουλή # 1: Ενεργοποιήστε τη ρύθμιση ViewersCanOnlySeeThemselves

Η ρύθμιση ViewersCanOnlySeeThemselves είναι μια σφαιρική ρύθμιση που εμποδίζει τους χρήστες που έλαβαν το ρόλο του "θεατή" να δουν άλλους εγγεγραμμένους χρήστες, ομάδες ή εκδότες στο RStudio Connect. Η ενεργοποίηση αυτής της ρύθμισης σημαίνει ότι οι θεατές θα βλέπουν μόνο τους εαυτούς τους και κανένας άλλος, όταν θα μεταβούν στη σελίδα "Χρήστες" στο Connect. Το ίδιο ισχύει και αν κοιτάξουν την καρτέλα "Πρόσβαση" για την εφαρμογή Shiny, η οποία κανονικά θα εμφανίζει τις ταυτότητες των εκδοτών. Με τη ρύθμιση ViewersCanOnlySeeThemselves που έχει οριστεί ως αληθής, οι εκδότες θα εμφανίζονται ως "Μη γνωστοποιημένος κάτοχος". Βεβαιωθείτε ότι ενεργοποιήσατε αυτήν τη ρύθμιση, ώστε οι πελάτες σας να μην μπορούν να δουν ποιος άλλος έχει πρόσβαση στον διακομιστή.

Συμβουλή # 2: Απενεργοποιήστε την κοινή χρήση "Όποιος δεν χρειάζεται σύνδεση"

Όταν ένας εκδότης δημοσιεύει ένα νέο κομμάτι περιεχομένου στο RStudio Connect, το μόνο άτομο που έχει πρόσβαση για να δει αυτό το περιεχόμενο είναι ο ίδιος ο εκδότης. Ο εκδότης μπορεί στη συνέχεια να μεταβεί στην καρτέλα "Πρόσβαση" για να παραχωρήσει δικαιώματα πρόσβασης σε συγκεκριμένους χρήστες ή ομάδες. Από προεπιλογή, το RStudio Connect προσφέρει επίσης την επιλογή να μοιραστείτε την εφαρμογή Shiny με το "Οποιοδήποτε - δεν απαιτείται σύνδεση". Είναι καλύτερο να απενεργοποιήσετε αυτήν την επιλογή, ώστε οι εκδότες σας να μην μοιράζονται κατά λάθος την εφαρμογή Shiny με ολόκληρο τον κόσμο.

Εξετάστε το ενδεχόμενο να απενεργοποιήσετε την επιλογή

Shiny Server Pro

Συμβουλή # 1: Απαιτείται έλεγχος ταυτότητας για την εφαρμογή σας

Όπως και με το RStudio Connect, είναι σημαντικό να βεβαιωθείτε ότι τα δικαιώματα πρόσβασης για μια εφαρμογή Shiny έχουν χορηγηθεί στους σωστούς θεατές. Για να ελέγξετε το σύνολο των εφαρμογών που επιτρέπεται σε συγκεκριμένους χρήστες να έχουν πρόσβαση, μπορείτε να καθορίσετε ποιοι χρήστες και / ή ομάδες θα πρέπει να έχουν πρόσβαση σε μια συγκεκριμένη τοποθεσία στο διακομιστή Shiny Server Pro στο αρχείο config shiny-server.conf:

# Καθορίστε μια εσωτερική θέση για μια συγκεκριμένη εφαρμογή που # απαιτεί τοποθεσία ελέγχου ταυτότητας / δείγμα-εφαρμογές / hello {required_user admin; }}}

Στο παραπάνω παράδειγμα, όλες οι εφαρμογές που ορίζονται στη θέση hello θα απαιτούν έλεγχο ταυτότητας ως χρήστη με το όνομα "admin". Δείτε το άρθρο Στιγμιαίο ξεκίνημα διακομιστή: Απαιτείται έλεγχος ταυτότητας χρήστη σε μια εφαρμογή για περισσότερες πληροφορίες.

Συμβουλή # 2: Απόκρυψη της σελίδας ευρετηρίου

Από προεπιλογή, θα εμφανίζεται ένα ευρετήριο όλων των διαθέσιμων εφαρμογών στον κατάλογό σας Shiny Server Pro όταν ένας χρήστης επισκέπτεται τη βασική διεύθυνση URL της διεύθυνσής σας Shiny Server Pro, αντί για τη διεύθυνση URL μιας συγκεκριμένης εφαρμογής. Αυτό είναι υπέροχο εάν θέλετε οι χρήστες σας να ανακαλύψουν νέο περιεχόμενο, ωστόσο μπορεί να είναι αρκετά προβληματικό αν δεν θέλετε να δουν τι άλλες εφαρμογές φιλοξενούνται στο διακομιστή Shiny σας. Ακόμα κι αν δεν έχουν πρόσβαση σε αυτές τις εφαρμογές, ίσως δεν θέλετε να δουν τυχαία τα ονόματά τους και να μάθουν για την ύπαρξή τους. Τα καλά νέα είναι ότι μπορείτε να αποκρύψετε τη σελίδα του Ευρετηρίου αλλάζοντας το directory_index. ρύθμιση στο αρχείο ρύθμισης παραμέτρων στο directory_index off.

Άλλες συστάσεις

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

Μπορεί επίσης να είναι καλή ιδέα να έχετε κάποια καλά καθορισμένη διαδικασία αναθεώρησης για την απελευθέρωση νέων εκδόσεων των Shiny εφαρμογών σας. Για παράδειγμα, μπορεί να έχετε μια ομάδα ή άτομο που αναλαμβάνει την ευθύνη του "μηχανικού απελευθέρωσης". Συνήθως, θα εκτελέσουν κάποιο είδος αναθεώρησης πριν προωθήσουν νέες εκδόσεις της εφαρμογής Shiny στο διακομιστή, διασφαλίζοντας ότι όχι μόνο η εφαρμογή λειτουργεί σύμφωνα με τις προτιμήσεις αλλά και ότι ικανοποιεί επίσης τα προκαθορισμένα κριτήρια παραγωγής (όπως ποιος θα πρέπει να έχει πρόσβαση σε αυτό). Το RStudio Connect καθιστά αυτή τη διαδικασία δημοσίευσης λαμπερών εφαρμογών πολύ πιο εύκολη απ 'ό, τι με το Shiny Server Pro. Η σύνδεση όχι μόνο προσφέρει πολλαπλές μεθόδους ανάπτυξης, αλλά και sandboxes κάθε εφαρμογή αυτόματα για την αποφυγή συγκρούσεων με άλλες εφαρμογές στον διακομιστή διατηρώντας απομονωμένες τις εξαρτήσεις κάθε εφαρμογής, όπως τα πακέτα και τα δεδομένα κάθε εφαρμογής.

συμπέρασμα

Τόσο το RStudio Connect όσο και το Shiny Server Pro μπορούν να ρυθμιστούν ως εξυπηρετητές πολλαπλών μισθωτών και να προσαρμοστούν έτσι ώστε το φιλοξενούμενο περιεχόμενο τους να μοιράζεται με ασφάλεια. Επιπλέον, οι μηχανικοί της RStudio βελτιώνουν συνεχώς τη σύνδεση και την ανάπτυξη νέων λειτουργιών, οπότε περιμένετε να δείτε επιπλέον λειτουργίες στο μέλλον. Ποιες άλλες βέλτιστες πρακτικές ακολουθεί ο οργανισμός σας; Μοιραστείτε τις προτάσεις σας ή τις νέες νέες λειτουργίες που θέλετε να δείτε στο RStudio Connect στην παρακάτω ενότητα σχολίων.