Oznaczaj obciążenia za pomocą pakietów zgodności AWS Config na kontach AWS
Ogólny zarys
Ze względu na fakt, że wdrożenia w chmurze stają się coraz większe i bardziej złożone, organizacje mają trudności z zarządzaniem i identyfikacją rosnącego zestawu zasobów. Tagi dostarczają firmom metadanych o ich zasobach – mogą je wykorzystać do identyfikacji zasobów na potrzeby alokacji kosztów, operacji czy bezpieczeństwa danych.
AWS Config to usługa AWS, która stale ocenia, kontroluje i ocenia konfiguracje i relacje Twoich zasobów AWS. Umożliwia wykrywanie zasobów istniejących na koncie, rejestrowanie ich konfiguracji i przechwytywanie wszelkich zmian, umożliwiając szybkie rozwiązywanie problemów operacyjnych. Ponadto, korzystając z predefiniowanych, dostosowywalnych reguł AWS Config, możesz ocenić, czy Twoje zasoby AWS są zgodne z typowymi najlepszymi praktykami i opcjonalnie skonfigurować działania naprawcze dla niezgodnych zasobów przy użyciu elementów runbook AWS Systems Manager. Jedna z takich reguł zarządzanych, required-tags, to reguła, która sprawdza, czy zasoby mają określone tagi, które identyfikujesz. Na przykład dzięki tej regule możesz sprawdzić, czy Twoje instancje Amazon Elastic Compute Cloud (Amazon EC2) mają CostCenter z kluczem tagu, czy nie.
Zarys rozwiązania
W tym artykule autorzy przedstawiają przykład dostosowanego elementu Runbook usługi Automation, możliwości AWS Systems Manager, która automatycznie koryguje niezgodne zasoby oceniane przez wymagane tagi reguły AWS Config. Jest to szczególnie przydatne w środowisku z wieloma kontami, w którym masz podobne wymagania na wielu kontach AWS. Ponieważ AWS Config i Systems Manager są usługami regionalnymi, konieczne będzie wdrożenie tego rozwiązania w każdym regionie na każdym koncie, które tego wymaga.
Twórcy rozpoczną od poprowadzenia Cię przez proces tworzenia udostępnionego elementu runbook AWS Systems Manager Automation z konta zarządzania AWS, a następnie pokażą, jak udostępnić go kontom członków w Twoich organizacjach AWS. Następnie połączą regułę wymaganych tagów AWS Config i akcję naprawczą przy użyciu elementu Runbook automatyzacji w pakiecie zgodności AWS Config. Pakiet zgodności to zbiór reguł AWS Config i działań naprawczych, które można łatwo wdrożyć jako pojedynczą jednostkę na koncie lub w całej organizacji. Na koniec wdrożą go za pośrednictwem organizacji AWS na wybranych kontach AWS.
Należy pamiętać, że to rozwiązanie będzie działać tylko z usługami obsługiwanymi przez interfejs API grupy zasobów. Tutaj znajdziesz listę obsługiwanych usług.
Usługi zastosowane w tym rozwiązaniu
AWS Config zapewnia szczegółowy widok konfiguracji zasobów AWS na Twoim koncie AWS. Obejmuje to, w jaki sposób zasoby są ze sobą powiązane i jak były konfigurowane w przeszłości, dzięki czemu można zobaczyć, jak konfiguracje i relacje zmieniają się w czasie.
AWS Systems Manager to bezpieczne, kompleksowe rozwiązanie do zarządzania środowiskami chmury hybrydowej. Twórcy użyją go do automatycznego korygowania niezgodnych zasobów przy użyciu elementu Runbook usługi Automation.
AWS Organizations umożliwia tworzenie nowych kont AWS bez dodatkowych opłat. Konta w organizacji umożliwiają łatwe przydzielanie zasobów, grupowanie kont i stosowanie zasad ładu do kont lub grup. W tym tekście autorzy użyją organizacji AWS, aby pokazać, jak łatwo można wykorzystać AWS Config i AWS Systems Manager w środowisku z wieloma kontami.
Wymagania wstępne
W tym instruktażu musisz mieć włączoną AWS Config na wszystkich kontach w swojej organizacji AWS. Szybkim sposobem na włączenie nagrywania AWS Config jest użycie Quick Setup, możliwości jaką daje AWS Systems Manager, która pozwala szybko utworzyć rejestrator konfiguracji.
W tym przypadku wymagane jest, aby klucz tagu nazwa-firmy i wartość znacznika CompanyXYZ zostały dodane do wszystkich instancji EC2 na wybranych kontach w organizacji AWS. Przed przystąpieniem do przewodnika przygotuj następujące informacje:
- Identyfikator konta AWS Organizations Management.
- (Opcjonalnie) Lista identyfikatorów kont członków, które chcesz wykluczyć z wdrażania tego rozwiązania.
- Zasobnik Amazon Simple Storage Service (Amazon S3) na koncie zarządzania organizacjami AWS, który będzie używany do przechowywania szablonu pakietu zgodności.
- Będziesz używać AWS CloudFormation i stosów. Zapoznaj się z dokumentacją tutaj lub tym wprowadzeniem wideo.
Wdróż rolę IAM za pomocą CloudFormation
Poniżej znajduje się szablon CloudFormation, którego autorzy używają do tworzenia roli IAM wymaganej do wywołania akcji naprawczej, którą tworzą później w sekcji „Create the Automation runbook”. Najpierw wdrożysz to jako zestaw StackSet z konta zarządzania na konta członków w Twojej organizacji. Następnie użyjesz stosu do wdrożenia na samym koncie zarządzania, ponieważ zestawy StackSet nie są wdrażane na kontach zarządzania.
Najpierw wdróż CloudFormation StackSet. Otwórz następującą stronę GitHub i pobierz plik cf-iam.yaml.
- Opcjonalnie możesz zmienić nazwę roli IAM i/lub nazwę polityki w szablonie CloudFormation. Na potrzeby tekstu nazwą roli IAM będzie TagRemediationAutomationRole, a nazwą zasady będzie TagRemediationAutomationPolicy.
- Na swoim koncie menedżerskim przejdź do konsoli AWS CloudFormation i wybierz StackSets z menu po lewej stronie.
- Kliknij przycisk Utwórz zestaw stosów.
- Na stronie Wybierz szablon pozostaw ustawienia domyślne dla sekcji Uprawnienia i Wymagania wstępne – Przygotuj szablon. W sekcji Określ szablon wybierz opcję Przekaż plik szablonu, a następnie przejdź do pobranego wcześniej pliku cf-iam.yaml. Kliknij Następny.
- Na stronie Specify StackSet nadaj nazwę StackSet (na potrzeby tego tekstu nazwij ją StackSetIAMRoleForRemediation). Resztę ekranu pozostaw z ustawieniami domyślnymi. Kliknij Dalej, a następnie ponownie Dalej.
- Na stronie Ustaw opcje wdrażania w polu Określ regiony wybierz region, w którym chcesz wdrożyć ten zestaw StackSet. Wybierz us-east-1 na potrzeby tego artykułu. Pozostaw wszystko inne z wartościami domyślnymi i kliknij Dalej.
- Na stronie Recenzja ponownie pozostaw wszystkie ustawienia domyślne, przewiń do końca strony i zaznacz pole obok opcji to I acknowledge that AWS CloudFormation might create IAM resources with custom names, a następnie wybierz opcję Prześlij do wdrożenia.
Następnie wdróż CloudFormation Stack.
- Na koncie zarządzania przejdź do konsoli AWS CloudFormation. Wybierz Stosy z menu po lewej stronie.
- Kliknij przycisk Utwórz stos, a następnie wybierz Z nowych zasobów (standard) z listy rozwijanej.
- Na stronie Utwórz stos pozostaw wartości domyślne dla opcji Wymagania wstępne – Przygotuj szablon. W sekcji Określ szablon wybierz opcję Przekaż plik szablonu, a następnie przejdź do pobranego wcześniej pliku cf-iam.yaml. Kliknij Dalej.
- Na stronie Określ szczegóły stosu nadaj stosowi nazwę (na potrzeby tego tekstu nazwij go StackIAMRoleForRemediation) i pozostaw pozostałą część ekranu z wartościami domyślnymi. Kliknij Dalej, a następnie ponownie Dalej.
- Na stronie Przegląd ponownie pozostaw wszystkie ustawienia domyślne, przewiń do końca strony i zaznacz pole obok opcji to I acknowledge that AWS CloudFormation might create IAM resources with custom names, a następnie wybierz opcję Prześlij do wdrożenia.
Po wdrożeniu tego w Twoim środowisku masz teraz wymaganą rolę, którą można przyjąć, gdy element Runbook usługi Automation zostanie wyzwolony przez akcję korygującą zdefiniowaną w konfiguracji AWS.
Utwórz element Runbook usługi Automation na potrzeby akcji korygującej i udostępnij element Runbook swoim kontom członkowskim
Korygowanie niezgodnych zasobów ocenianych przez regułę AWS Config odbywa się przy użyciu elementów Runbook usługi Automation. Aby utrzymać centralnie zarządzane elementy Runbook w całej organizacji, należy utworzyć ten element Runbook przy użyciu stosu CloudFormation na koncie zarządzania i udostępnić element Runbook kontom członków za pośrednictwem konsoli zarządzania AWS.
Otwórz następującą stronę GitHub i pobierz plik cf-automation-runbook.yaml.
- Na koncie zarządzania przejdź do konsoli AWS CloudFormation. Wybierz Stosy z menu po lewej stronie.
- Kliknij przycisk Utwórz stos, a następnie wybierz Z nowymi zasobami (standard) z listy rozwijanej.
- Na stronie Utwórz stos pozostaw wartości domyślne dla opcji Wymagania wstępne – Przygotuj szablon. W sekcji Określ szablon wybierz opcję Załaduj plik szablonu, a następnie przejdź do pobranego wcześniej pliku cf-automation-runbook.yaml. Kliknij Dalej.
- Na stronie Określ szczegóły stosu nadaj stosowi nazwę (na potrzeby tego blogu nazwij go StackRemediationRunbook). Resztę ekranu pozostaw z ustawieniami domyślnymi. Kliknij Dalej, a następnie ponownie Dalej.
- Na stronie Przegląd ponownie pozostaw wszystkie ustawienia domyślne, przewiń do końca strony i wybierz opcję Prześlij do wdrożenia.
Ten szablon utworzył element Runbook usługi Automation o nazwie SsmDocumentTagRemediation, który używa ResourceID przekazanego przez reguły AWS Config do wysyłania zapytań o numery ARN niezgodnych zasobów, a następnie używa interfejsu API tagowania grup zasobów AWS do oznaczania tych zasobów.
Teraz, gdy masz już utworzony element Runbook usługi Automation, udostępnij go kontom członków w organizacji AWS. Aby to zrobić:
- Na koncie zarządzania otwórz konsolę AWS Systems Manager, a następnie wybierz Dokumenty w lewym okienku nawigacyjnym.
- Wybierz kartę Posiadane przeze mnie i wybierz element Runbook SsmDocumentTagRemediation utworzony w poprzednim kroku.
- Wybierz kartę Szczegóły. W sekcji uprawnień dodaj dowolne konto, któremu chcesz udostępnić ten element Runbook, i wybierz pozycję Zapisz, aby zapisać zmiany. (Uwaga: istnieje limit, który pozwala na współdzielenie pojedynczego dokumentu Systems Manager z maksymalnie 1000 kontami AWS).
Pamiętaj, że podczas gdy my używamy konsoli do udostępniania elementu Runbook, możesz również użyć interfejsu ModifyDocumentPermission API lub AWS CLI, aby programowo dodać identyfikatory kont AWS.
Wdróż pakiet zgodności na koncie zarządzania
Pakiet zgodności to zbiór reguł AWS Config i działań naprawczych, które można łatwo wdrożyć jako pojedynczą jednostkę na koncie i regionie lub w całej organizacji w organizacjach AWS. W omawianym przykładzie wdrożysz pakiet zgodności za pośrednictwem organizacji AWS.
Możesz wdrożyć pakiet zgodności organizacji z konta zarządzania organizacją lub konta administratora delegowanego ze względów bezpieczeństwa. Na potrzeby tego artykułu wdrożysz go z konta zarządzania.
Aby wdrożyć pakiet zgodności w organizacjach AWS, możesz użyć polecenia put-organization-conformance-pack interfejsu wiersza poleceń (CLI) AWS lub AWS CloudFormation. W tym artykule autorzy najpierw utworzą szablon pakietu zgodności i prześlą go do zasobnika S3, a następnie wdrożą pakiet zgodności organizacji przy użyciu zasobu AWS CloudFormation AWS::Config::OrganizationConformancePack.
Aby utworzyć szablon pakietu zgodności, otwórz następującą stronę GitHub i pobierz plik cf-conformancepack-doc-map.yaml.
- Przed wdrożeniem pakietu zgodności należy wprowadzić kilka modyfikacji w szablonie pakietu zgodności, aby dopasować go do swoich potrzeb. W tym przykładzie autorzy określają, że ich zasób wymaga następujących tagów i nazwy pakietu zgodności:
- Tag1key: company-name
- Tag1value: CompanyXYZ
- Conformance Pack Name: TagRemediationConformancePack
- Zdefiniuj nazwę pakietu zgodności jako parametr w wersach 19-22: Parameters: ConformancePackName: Default: 'TagRemediationConformancePack' Type: String
- Wymagana para tag/wartość jest zdefiniowana w wersach 23-27 jako mapa o nazwie RequiredTags:
Mappings:
RequiredTags:
tag1:
key: company-name
value: CompanyXYZ
4.Wymagany tag/wartość, który zdefiniowałeś w poprzednim kroku, zostanie użyty do podania wartości InputParameters zasobu ResourceTaggingCheck w wersach 39-41:
InputParameters:
tag1Key: !FindInMap [RequiredTags, tag1, key]
tag1Value: !FindInMap [RequiredTags, tag1, value]
5.Mapa RequiredTags służy również do podania wartości sekcji Parametry zasobu MapTaggingRemediation, która zostanie przekazana do elementu Runbook automatyzacji remediacji w wersach 51-58:
Parameters:
RequiredTags:
StaticValue: Values:
- !Sub
- '{"${tag1key}":"${tag1value}"'
- tag1key: !FindInMap [RequiredTags, tag1, key]
tag1value: !FindInMap [RequiredTags, tag1, value]
6.We właściwości Scope elementu ResourceTaggingCheck dla ComplianceResourceType określisz, które usługi mają być oceniane przez tę regułę. W tym artykule autorzy określają tylko instancje EC2 jako AWS::EC2::Instance. Listę obsługiwanych usług AWS można znaleźć w obsługiwanych zasobach określonych w Podręczniku użytkownika AWS Config w temacie wymagane tagi. Pamiętaj, że aby dodać tagi do zasobu, potrzebujesz niezbędnych uprawnień do usługi, do której należy zasób, a także uprawnień do dodawania tagów. Stworzona rola IAM umożliwia Automation dodawanie tagów do instancji EC2. Jeśli chcesz otagować zasoby w innych usługach AWS, musisz dodać uprawnienia wymagane przez odpowiednią usługę do roli IAM, która została wdrożona podczas wdrażania roli IAM za pośrednictwem CloudFormation StackSets i Stack. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją Podręcznika użytkownika dla każdej usługi.
7.W szablonie Conformance Pack zastąp w szablonie swoim identyfikatorem konta zarządzania w wersach 49 i 70 i zmień region, jeśli wdrażasz pakiet zgodności w regionie innym niż us-east-1 na linii 49.
8.Po zakończeniu wszystkich modyfikacji prześlij szablon Conformance Pack do zasobnika S3 na koncie zarządzania. Po przesłaniu zanotuj identyfikator URI S3. Przykładowy identyfikator URI S3 wygląda jak s3:///cf-conformancepack-doc-map.yaml.
Możesz określić maksymalnie 6 par tag/wartość dla zarządzanej reguły required-tags. Możesz pobrać kompletny przykładowy szablon pakietu zgodności z wieloma wymaganymi tagami i przykładowym identyfikatorem konta 123456789012, który jest wdrażany w us-east-1.
Aby wdrożyć pakiet zgodności jako pakiet zgodności organizacji za pośrednictwem CloudFormation, otwórz następującą stronę GitHub i pobierz plik cf-org-conformance-pack.yaml.
- (Opcjonalnie) Możesz zmodyfikować parametr ExcludedAccounts w wersie 24 szablonu CloudFormation cf-org-conformance-pack.yaml, aby określić rozdzielaną przecinkami listę kont, na których nie chcesz wdrażać pakietu ConformancePack.
- Zmodyfikuj TemplateS3Uri w wierszu 31 za pomocą identyfikatora URI S3 szablonu pakietu zgodności przesłanego do S3 w poprzednim kroku. Pamiętaj, że jeśli zmieniłeś ConformancePackName w wierszu 21 pliku compliance-doc-map.yaml, musisz zmienić wartość parametru OrganizationConformancePackName w wersie 30 tego szablonu, aby była zgodna.
- Użyj AWS CloudFormation, aby wdrożyć ten szablon CloudFormation jako stos ze swojego konta zarządzania:
- Przejdź do konsoli AWS CloudFormation. Wybierz Stosy z menu po lewej stronie.
- Kliknij przycisk Utwórz stos, a następnie wybierz Z nowych zasobów (standard) z listy rozwijanej.
- Na stronie Utwórz stos pozostaw wartości domyślne dla opcji Wymagania wstępne – Przygotuj szablon. W sekcji Określ szablon wybierz opcję Przekaż plik szablonu, a następnie przejdź do pobranego wcześniej pliku cf-org-conformance-pack.yaml. Kliknij Dalej.
- Na stronie Określ szczegóły stosu nadaj stosowi nazwę (na potrzeby tego artykułu nazwij go StackConformancePack). Resztę ekranu pozostaw z ustawieniami domyślnymi. Kliknij Dalej, a następnie ponownie Dalej.
- Na stronie Przegląd ponownie pozostaw wszystkie ustawienia domyślne, przewiń do końca strony i wybierz pozycję Prześlij do wdrożenia.
Po zakończeniu wdrażania CloudFormation pakiet zgodności zostanie wdrożony na wszystkich kontach w Twojej organizacji poza kontami wykluczonymi.
Sprawdź zgodność zasobów EC2 dla pakietu zgodności
Po wykonaniu powyższych kroków posiadasz teraz wdrożony pakiet zgodności organizacji AWS Config z określonymi żądanymi wymaganymi tagami, a także akcję naprawczą, która automatycznie oznaczy niezgodne zasoby.
Zweryfikuj z konta zarządzania
- Otwórz konsolę AWS Config i przejdź do strony Conformance Packs. Na stronie Pakiety zgodności można następnie zobaczyć wcześniej wdrożony pakiet zgodności i ocenę zgodności.
- Kliknij nazwę pakietu zgodności, aby zobaczyć więcej szczegółów, a następnie zobaczyć regułę wdrożoną wraz z pakietem zgodności oraz stan zgodności reguł.
- Kliknij nazwę reguły, aby sprawdzić poprawność akcji naprawczej i wyświetlić zasoby w zakresie. Możesz również zobaczyć stan wykonania korygowania, jeśli zostały wyzwolone.
- Przejdź do Menedżera systemu AWS, aby zobaczyć historię wykonań Automation, jeśli chcesz zobaczyć szczegóły wykonania lub rozwiązać problem.
(Opcjonalnie) Sprawdź poprawność na koncie członkowskim
Zaloguj się do jednego z kont członkowskich, na których wdrożono pakiet zgodności i wykonaj powyższe kroki, aby zweryfikować stan zgodności zasobów.
Porządkowanie
Aby wyczyścić zasoby wdrożone w tym poście, wykonaj następujące kroki na koncie zarządzania:
- Usuń stos pakietu zgodności CloudFormation.
- Anuluj udostępnianie elementu Runbook usługi Automation kontom członkowskim.
- Usuń stos CloudFormation elementu Runbook usługi Automation.
- Usuń stos i zestaw stosów CloudFormation roli Automation IAM.
Wnioski
Zasoby wdrożone w chmurze stały się w ostatnich latach znacznie bardziej złożone, a firmy miały trudności z zarządzaniem nimi wszystkimi we właściwy sposób. W AWS tagi mogą dostarczać metadane dotyczące tych zasobów. Znaczniki mogą być używane do identyfikowania, zarządzania i utrzymywania zasobów, pomagając organizacjom w takich kwestiach, jak operacje i bezpieczeństwo.
Na przykładzie tego artykułu autorzy pokazali, jak używać pakietu zgodności AWS Config do automatycznego oznaczania niezgodnych zasobów, które zostały ocenione przez zarządzaną regułę AWS Config. W szczególności skupili się na utworzeniu dostosowanego elementu Runbook usługi Automation na potrzeby akcji naprawczej. Następnie udostępnili element Runbook kontom członków w naszej organizacji AWS. Potem stworzyli pakiet zgodności AWS Config, który połączył regułę zarządzaną AWS Config z wymaganymi tagami z elementem Runbook Automation i zademonstrowali, jak wdrożyć pakiet zgodności organizacji w środowisku wielu kont na wybranych kontach członków w naszej organizacji AWS.
Aby dowiedzieć się więcej o najlepszych praktykach tagowania i zbudować strategię tagowania dla swoich potrzeb biznesowych, zapoznaj się z AWS Whitepaper Tagging Best Practices.
Źródło: AWS