Na jakim koncie działają kroki zadań w SQL Server Agencie?

20-Cze-2011

Kiedy masz do automatyzowania pewne powtarzające się działanie, to dostajesz do dyspozycji SQL Server Agenta. Usługa ta świetnie się sprawdza, jeżeli trzeba regularnie sprawdzać stan bazy danych, wykonać backup lub regularnie uruchamiać procesy eksportu i importu.

Pewną bolączką może jednak być określenie poprawnych uprawnień tak, aby Agent z jednej strony mógł wykonać to, co ma do zrobienia, a z drugiej strony nie otrzymał zbyt wielu uprawnień. Z jakimi uprawnieniami działają właściwie nasze zadania!?

Jeżeli np. próbujesz uruchomić zadanie z uprawnieniami Administratora (członka roli serwerowej sysadmin), to zadanie będzie wykonywane z uprawnieniami konta, na którym działa usługa SQL Server Agent! Przeanalizuj poniższy przykład.

System Windows posiada polecenie whoami, które wyświetla nazwę użytkownika uruchamiającego te polecenie.

Stworzymy zadanie SQL Agenta, zawierające tylko jeden krok – uruchomienie polecenia whoami i zapisanie go do pliku.

Jeżeli teraz uruchomisz to zadanie, to w pliku znajdziesz nazwę użytkownika, na którego koncie działa usługa sql agent.

(* Uwaga! Musisz zadabać o to aby ten użytkownik miał prawo zapisu do katalogu e:\results. Jeżeli o to nie zadbałeś, to zadanie skończy się błędem informującym o braku uprawnień).

Co zrobić aby zadanie uruchamiało się na innym koncie użytkownika? Otóż najpierw w security w SQL Serwerze musisz zapisać tzw. credentials. Credentials w bezpieczny sposób pozwala przechowywać serwerowi  nazwę użytkownika i jego hasło. Można by więc porównać taki credentials z zalakowaną kopertą w której ważna osoba z naszej sieci zapisała swoją nazwę użytkownika i hasło, po to aby w krytycznych sytuacjach użyć tych danych. W przypadku sql server agenta credentials zostaną użyte aby uruchmić zadanie z uprawnieniami określonego konta. Kiedy zechcesz uruchmić takie zadanie sql server agent poprosi o odpowiednie dane serwer. W naszym przypadku przygotowałem dwa credentials o nazwach AsAdmin (zawierające hasło administratora) oraz AsStudent (zawierające hasło użytkownika Active Directory – student. W credentials nie powinieneś raczej ze względu na bezpieczeństwo nie powinieneś zaspisywać hasła administratora. To konto służy tu jedynie jako przykład.

To jeszcze nie wszystko. Agent potrafi skorzystać z credentials tylko jeżeli w jego konfiguracji ustawisz tzw. proxy . Dodając proxy  musisz określić jego nazwę (tutaj AsAdmin), istniejący credential oraz określić do jakich celów można użyć tego konta. Nasze zadanie należy do grupy  Operating System (cmdExec). W ten sam sposób skonfigurowano dwa Proxy: AsAdmin oraz AsStudent.

Teraz można powrócić do definicji zadania SQL Server Agenta. We właściwościach kroku zadania można określić, że zadanie to ma się uruchamiać na koncie Proxy „AsAdmin”, które wykorzysta credential „AsAdmin”.

Po uruchomieniu zadania powinieneś zobaczyć w pliku tekstowym następujący wpis:

Jeżeli zaś w zadaniu ustawisz w RunAs, że ma się ono wykonywać „As Student”,

to w pliku powinien się pojawić zapis o studencie:

Ten temat jest dokładniej omawiamy na autoryzowanym szkoleniu Microsoft 6231 Maintaining a SQL Server 2008 w Opolu, Katowicach i Warszawie w ośrodkach szkoleniowych firmy bit Polska. Zapraszam na moje szkolenia!

Kiedy masz do automatyzowania pewne powtarzające się działanie, to dostajesz do dyspozycji SQL Server Agenta. Usługa ta świetnie się sprawdza, jeżeli trzeba regularnie sprawdzać stan bazy danych, wykonać backup lub regularnie uruchamiać procesy eksportu i importu.

Pewną bolączką może jednak być określenie poprawnych uprawnień tak, aby Agent z jednej strony mógł wykonać to, co ma do zrobienia, a z drugiej strony nie otrzymał zbyt wielu uprawnień. Z jakimi uprawnieniami działają właściwie nasze zadania!?

Jeżeli np. próbujesz uruchomić zadanie z uprawnieniami Administratora (członka roli serwerowej sysadmin), to zadanie będzie wykonywane z uprawnieniami konta, na którym działa usługa SQL Server Agent! Przeanalizuj poniższy przykład.

System Windows posiada polecenie whoami, które wyświetla nazwę użytkownika uruchamiającego te polecenie.

<<01>>

Stworzymy zadanie SQL Agenta, zawierające tylko jeden krok – uruchomienie polecenia whoami i zapisanie go do pliku.

<<02>>

<<03>>

Jeżeli teraz uruchomisz to zadanie, to w pliku znajdziesz nazwę użytkownika, na którego koncie działa usługa sql agent.

(* Uwaga! Musisz zadabać o to aby ten użytkownik miał prawo zapisu do katalogu e:\results. Jeżeli o to nie zadbałeś, to zadanie skończy się błędem informującym o braku uprawnień).

<<4>>

Co zrobić aby zadanie uruchamiało się na innym koncie użytkownika? Otóż najpierw s security w SQL Serwerze musisz zapisać tzw. credentials. Credentials w bezpieczny sposób pozwala przechowywać serwerowi nazwę użytkownika i jego hasło. Można by więc porównać taki credentials z zalakowaną kopertą w której ważna osoba z naszej sieci zapisała swoją nazwę użytkownika i hasło, po to aby w krytycznych sytuacjach użyć tych danych. W przypadku sql server agenta credentials zostaną użyte aby uruchmić zadanie z uprawnieniami określonego konta. Kiedy zechcesz uruchmić takie zadanie sql server agent poprsosi o odpowiedznie dane serwer. W naszym przypadku przygotowałem dwa credentials o nazwach AsAdmin (zawierające hasło administratora) oraz AsStudent (zawierające hasło użytkownika Active Directory – student. W credentials nie powinieneś raczej ze względu na bezpieczeństwo nie powinieneś zaspisywać hasła administratora. To konto służy tu jedynie jako przykład.

<<5>>

To jeszcze nie wszystko. Agent potrafi skorzystać z credentials tylko jeżeli w jego konfiguracji ustawisz tzw. proxy . Dodając proxy musisz określić jego nazwę (tutaj AsAdmin), istniejący credential oraz określić do jakich celów można użyć tego konta. Nasze zadanie należy do grupy Operating System (c

Kiedy masz do automatyzowania pewne powtarzające się działanie, to dostajesz do dyspozycji SQL Server Agenta. Usługa ta świetnie się sprawdza, jeżeli trzeba regularnie sprawdzać stan bazy danych, wykonać backup lub regularnie uruchamiać procesy eksportu i importu.

Pewną bolączką może jednak być określenie poprawnych uprawnień tak, aby Agent z jednej strony mógł wykonać to, co ma do zrobienia, a z drugiej strony nie otrzymał zbyt wielu uprawnień. Z jakimi uprawnieniami działają właściwie nasze zadania!?

Jeżeli np. próbujesz uruchomić zadanie z uprawnieniami Administratora (członka roli serwerowej sysadmin), to zadanie będzie wykonywane z uprawnieniami konta, na którym działa usługa SQL Server Agent! Przeanalizuj poniższy przykład.

System Windows posiada polecenie whoami, które wyświetla nazwę użytkownika uruchamiającego te polecenie.

<<01>>

Stworzymy zadanie SQL Agenta, zawierające tylko jeden krok – uruchomienie polecenia whoami i zapisanie go do pliku.

<<02>>

<<03>>

Jeżeli teraz uruchomisz to zadanie, to w pliku znajdziesz nazwę użytkownika, na którego koncie działa usługa sql agent.

(* Uwaga! Musisz zadabać o to aby ten użytkownik miał prawo zapisu do katalogu e:\results. Jeżeli o to nie zadbałeś, to zadanie skończy się błędem informującym o braku uprawnień).

<<4>>

Co zrobić aby zadanie uruchamiało się na innym koncie użytkownika? Otóż najpierw s security w SQL Serwerze musisz zapisać tzw. credentials. Credentials w bezpieczny sposób pozwala przechowywać serwerowi  nazwę użytkownika i jego hasło. Można by więc porównać taki credentials z zalakowaną kopertą w której ważna osoba z naszej sieci zapisała swoją nazwę użytkownika i hasło, po to aby w krytycznych sytuacjach użyć tych danych. W przypadku sql server agenta credentials zostaną użyte aby uruchmić zadanie z uprawnieniami określonego konta. Kiedy zechcesz uruchmić takie zadanie sql server agent poprsosi o odpowiedznie dane serwer. W naszym przypadku przygotowałem dwa credentials o nazwach AsAdmin (zawierające hasło administratora) oraz AsStudent (zawierające hasło użytkownika Active Directory – student. W credentials nie powinieneś raczej ze względu na bezpieczeństwo nie powinieneś zaspisywać hasła administratora. To konto służy tu jedynie jako przykład.

<<5>>

To jeszcze nie wszystko. Agent potrafi skorzystać z credentials tylko jeżeli w jego konfiguracji ustawisz tzw. proxy . Dodając proxy  musisz określić jego nazwę (tutaj AsAdmin), istniejący credential oraz określić do jakich celów można użyć tego konta. Nasze zadanie należy do grupy  Operating System (cmdExec). W ten sam sposób skonfigurowano dwa Proxy: AsAdmin oraz AsStudent.

<<6>>

Teraz można powrócić do definicji zadania SQL Server Agenta. We właściwościach kroku zadania można określić, że zadanie to ma się uruchamiać na koncie Proxy „AsAdmin”, które wykorzysta credential „AsAdmin”.

<<7>>

Po uruchomieniu zadania powinieneś zobaczyć w pliku tekstowym następujący wpis:

<<8>>

Jeżeli zaś w zadaniu ustawisz w RunAs, że ma się ono wykonywać „As Student”,

<<9>>

to w pliku powinien się pojawić zapis o studencie:

<<10>>

Ten temat jest dokładniej oamwiany na szkoleniu 6231 Maintaining a SQL Server 2008 w Opolu, Katowicach i Warszawie w ośrodkach szkoleniowych firmy bit Polska. Zapraszam!

mdExec). W ten sam sposób skonfigurowano dwa Proxy: AsAdmin oraz AsStudent.

<<6>>

Teraz można powrócić do definicji zadania SQL Server Agenta. We właściwościach kroku zadania można określić, że zadanie to ma się uruchamiać na koncie Proxy „AsAdmin”, które wykorzysta credential „AsAdmin”.

<<7>>

Po uruchomieniu zadania powinieneś zobaczyć w pliku tekstowym następujący wpis:

<<8>>

Jeżeli zaś w zadaniu ustawisz w RunAs, że ma się ono wykonywać „As Student”,

<<9>>

to w pliku powinien się pojawić zapis o studencie:

<<10>>

Ten temat jest dokładniej oamwiany na szkoleniu 6231 Maintaining a SQL Server 2008 w Opolu, Katowicach i Warszawie w ośrodkach szkoleniowych firmy bit Polska. Zapraszam!

Dodaj komentarz:

Autor: Rafał Kraik