Aktualizacje platformy

Ukończone

Wielu deweloperów uważa, że struktury i biblioteki używane przez nich do tworzenia oprogramowania są przede wszystkim decydowane przez funkcje lub preferencje osobiste. Jednak wybrana struktura jest ważną decyzją, nie tylko z perspektywy projektu i funkcjonalności, ale także z perspektywy zabezpieczeń . Wybranie struktury z nowoczesnymi funkcjami zabezpieczeń oraz jej aktualizowanie jest jednym z najlepszych sposobów na zapewnienie zabezpieczeń dla aplikacji.

Rozważne wybieranie struktury

Najważniejszym czynnikiem dotyczącym zabezpieczeń podczas wybierania struktury jest to, jak dobrze jest obsługiwana. Najlepsze struktury mają określone zasady zabezpieczeń oraz są obsługiwane przez duże społeczności, które poprawiają i testują strukturę. Żadne oprogramowanie nie jest w 100% wolne od błędów i całkowicie bezpieczne, ale w przypadku zidentyfikowania luki w zabezpieczeniach chcemy mieć pewność, że zostanie ona zamknięta i otrzyma odpowiednie obejście w krótkim czasie.

Często „dobrze obsługiwana” oznacza tyle co „nowoczesna”. Starsze struktury często są zastępowane lub po pewnym czasie tracą popularność. Nawet jeśli masz znaczne doświadczenie lub posiadasz wiele aplikacji napisanych w starszej strukturze, lepiej będzie wybrać współczesną bibliotekę, która zapewni wymagane funkcje. Nowoczesne struktury zwykle opierają się na lekcjach poznanych przez wcześniejsze iteracji, co sprawia, że wybór ich dla nowych aplikacji jest formą zmniejszenia obszaru zagrożeń. Będziesz mieć jeszcze jedną aplikację, która będzie martwić się o wykrycie luki w zabezpieczeniach w starszej strukturze, w której napisane są starsze aplikacje.

Aby uzyskać więcej informacji na temat bezpiecznego projektowania i zmniejszania obszaru zagrożeń, zobacz Microsoft Azure Well-Architected Framework — Security (Struktura dobrze zaprojektowana przez platformę Microsoft Azure — zabezpieczenia).

Utrzymywanie aktualnej struktury

Struktury programistyczne (takie jak Java Spring i .NET Core) regularnie udostępniają aktualizacje i nowe wersje. Te aktualizacje obejmują nowe funkcje, usuwanie starych funkcji, a także często poprawki i ulepszenia zabezpieczeń. Kiedy pozwolimy, aby nasze struktury stały się nieaktualne, tworzy "dług techniczny". Im bardziej nieaktualne, tym trudniejsze i bardziej ryzykowne będzie wprowadzenie naszego kodu do najnowszej wersji. Ponadto, podobnie jak w przypadku wstępnego wyboru struktury, zachowywanie starszych wersji struktury naraża użytkownika na więcej zagrożeń dla bezpieczeństwa, które zostały już naprawione w nowszych wydaniach struktury.

Na przykład od 2016 do 2017 r. w strukturze Apache Struts znaleziono ponad 30 luk w zabezpieczeniach . Zespół deweloperów szybko rozwiązał te luki w zabezpieczeniach, ale niektóre firmy nie zastosowały poprawek i zapłaciły cenę w postaci naruszenia danych. Upewnij się, że struktury i biblioteki są aktualne.

Jak zaktualizować strukturę?

Niektóre struktury, np. Java lub .NET, wymagają instalacji i mają tendencję do wydawania nowych wersji w znanym cyklu. Dobrym pomysłem będzie obserwowanie nowych wersji i odpowiednie planowanie, aby wypróbować nową wersję przy użyciu gałęzi kodu. Na przykład platforma .NET Core utrzymuje stronę informacji o wersji, którą można sprawdzić, aby znaleźć najnowsze dostępne wersje.

Bardziej wyspecjalizowane biblioteki, takie jak struktury JavaScript lub składniki platformy .NET, można zaktualizować za pomocą menedżera pakietów. NPM i Webpack to popularne rozwiązania w przypadku projektów internetowych. Są one obsługiwane przez większość środowisk IDE lub narzędzi do kompilacji. Na platformie .NET używamy narzędzia NuGet do zarządzania zależnościami składników. Podobnie jak aktualizowanie podstawowej struktury, rozgałęzianie kodu, aktualizowanie składników i testowanie jest dobrą techniką sprawdzania poprawności nowej wersji zależności.

Uwaga

Narzędzie dotnet wiersza polecenia ma add package opcję i remove package , aby dodać lub usunąć pakiety NuGet, ale nie ma odpowiedniego update package polecenia. Jednak okazuje się, że możesz uruchomić polecenie dotnet add package <package-name> w projekcie, co spowoduje automatyczne uaktualnienie pakietu do najnowszej wersji. Jest to prosty sposób aktualizowania zależności bez potrzeby otwierania środowiska IDE.

Korzystanie z wbudowanych zabezpieczeń

Zawsze sprawdzaj funkcje zabezpieczeń oferowane przez strukturę. Nigdy nie wdrażaj własnych zabezpieczeń, jeśli istnieje standardowa technika lub wbudowana funkcja. Ponadto polegaj na sprawdzonych algorytmach i przepływach pracy, ponieważ często są one sprawdzane przez wielu ekspertów, krytykowane i wzmacniane, aby zapewnić ich niezawodność i bezpieczeństwo.

Platforma .NET Core ma niezliczone funkcje zabezpieczeń. Poniżej przedstawiono kilka podstawowych miejsc początkowych w dokumentacji:

Każda z tych funkcji została napisana przez ekspertów w swojej dziedzinie, a następnie poobijana testami, aby upewnić się, że działają zgodnie z oczekiwaniami i tylko zgodnie z oczekiwaniami. Inne struktury oferują podobne funkcje; Zapoznaj się z dostawcą, który udostępnia platformę, aby dowiedzieć się, co ma w każdej kategorii.

Ostrzeżenie

Pisanie własnych mechanizmów kontroli zabezpieczeń zamiast używania tych udostępnianych przez platformę nie jest tylko stratą czasu, ale jest mniej bezpieczne.

Microsoft Defender for Cloud Alert

Jeśli używasz platformy Azure do hostowania aplikacji internetowych, Defender dla Chmury wyświetli ostrzeżenie, jeśli twoje struktury są nieaktualne w ramach karty zaleceń. Nie zapomnij spojrzeć tam od czasu do czasu, aby sprawdzić, czy istnieją jakieś ostrzeżenia związane z aplikacjami.

Screenshot of Microsoft Defender for Cloud recommending a framework upgrade.

Podsumowanie

Jeśli jest to możliwe, wybierz nowoczesną strukturę, aby tworzyć aplikacje, zawsze używaj wbudowanych funkcji zabezpieczeń i upewniaj się, że struktura jest aktualna. Te proste reguły pomogą Ci w zapewnieniu, że zaczynasz tworzenie aplikacji na solidnej podstawie.