Caché Security
Jak vypadá zabezpečení dnes Jak bude vypadat a co by Caché měla umět v budoucnu Včera, dnes a zítra
Caché dnes standardní nastavení Caché po instalaci základní názor = zabezpečit systém jako celek tři základní skupiny zabezpečení serveru Caché direct usernames Caché direct usernames Users and Terminal Access (jen Windows) Users and Terminal Access (jen Windows) SQL usernames SQL usernames
Caché direct usernames uživatelé, kteří mohou používat grafické utility, připojení z VB a Javy (objektový přístup) Caché Control Panel seznam uživatelů seznam uživatelů jméno + heslo case sensitive jméno + heslo case sensitive aktivace kontrolování!!! right-click = Security Checking Enabled right-click = Security Checking Enabled zkontrolovat + otestovat hesla zkontrolovat + otestovat hesla „an undocumented command can disable security“ „an undocumented command can disable security“
Users and Terminal Access na Unixu a OpenVMS login přímo do systému na Windows speciální účty Caché Control Panel Caché Control Panel vytvoření účtů složka User Accounts login TRM: lokální připojení lokální připojení obvykle bez hesla obvykle bez hesla login: „SYS“, heslo: „XXX“ přístup na terminál přístup na terminál k omezení práv slouží routiny a namespace k omezení práv slouží routiny a namespace
SQL přístup přes ODBC zapnutí kontrol Security při přístupu přes SQL zapnutí kontrol Security při přístupu přes SQL restart Caché (při NO?) restart Caché (při NO?) změna práv na SQL pomocí SQL pomocí SQL GRANT ACCESS k NAMESPACE GRANT ACCESS k NAMESPACE SQL usernames and roles SQL usernames and roles pomocí Caché SQL Manager pomocí Caché SQL Manager
SQL - Commands CREATE USER user_name IDENTIFY BY password ALTER USER user_name IDENTIFY BY password DROP USER user_name CREATE ROLE role_name DROP ROLE role_name GRANT system_level_privilege [, system_level_privilege ] TO [ user_name |PUBLIC] [WITH ADMIN OPTION] system_level_privilege: %CREATE_USER, %ALTER_USER, %DROP_USER, %CREATE_ROLE, %GRANT_ANY_ROLE, %DROP_ANY_ROLE, %GRANT_ANY_PRIVILEGE REVOKE system_level_privilege [, system_level_privilege ] FROM [ user_name |PUBLIC] GRANT object_level_privilege [, object_level_privilege ] ON [*| table_name ] TO user_name [WITH GRANT OPTION] object_level_privilege: %ALTER, DELETE, INSERT, REFERENCES, SELECT, UPDATE REVOKE object_level_privilege [, object_level_privilege ] ON [*| object_name ] FROM user_name CASCADE where object_level_privilege: %ALTER, DELETE, INSERT, REFERENCES, SELECT, UPDATE
SQL - Commands … stejné příkazy pro Role = použije se jméno role místo jména uživatele GRANT role_name [, role_name ] TO user_name REVOKE role_name [, role_name ] FROM user_name Změna hesla u _SYSTEM ALTER USER “_SYSTEM” IDENTIFY BY password ALTER USER “_SYSTEM” IDENTIFY BY password aby mohl být tento příkaz vykonán, musí být zapnuta podpora identifikátorů s oddělovačem („_“) např. pomocí Caché Configuration Manager nebo pomocí příkazu: D SetDelimitedIdentifiers^%apiSQL(1) aby mohl být tento příkaz vykonán, musí být zapnuta podpora identifikátorů s oddělovačem („_“) např. pomocí Caché Configuration Manager nebo pomocí příkazu: D SetDelimitedIdentifiers^%apiSQL(1)
Co tedy dělat? 1.Zakázat neautorizovaný přístup z GUI 1. Zapnout kontroly 2. Nadefinovat uživatele 2.Pozor na terminál 1. Změna hesla pro login SYS 2. Nebo zakázat přístup na Telnet úplně 3.ODBC 1. Změna hesla pro login _SYSTEM 4.Nejlépe zavřít porty 24, 1972, 4001 pro přístup zvenčí 5.Firewall
Co tedy přijde? Co si v InterSystems představují? Co bude nového a co s tím?
Kdy a co? Všechno bude implementováno v Caché 5.1 centrální správa přístupových práv Caché Advanced Security Caché Advanced Securityresourcesprivileges
Resource+Privilege něco co má být chráněno a jak má být chráněno privilege read read write write use use develop develop
Database Privileges zabezpečení přístupu do celé databáze Povolení %DB/ DevelopModifikování spustitelného kódu ReadPřístup k datům UseSpouštění kódu WriteZměna dat (nikoli spustitelného kódu)
Dále… Namespaces například při změně aktivního namespace například při změně aktivního namespace Percent Routines and Globals zabezpečení rutin „s procentem“ a zabezpečení globálů zabezpečení rutin „s procentem“ a zabezpečení globálů Default Database Privileges Service Privilege zabezpečení různých druhů připojení do Caché zabezpečení různých druhů připojení do Caché
Dále… Administrative Privileges administrátorská práva, přidělování rolí, ukončení procesů, atd. administrátorská práva, přidělování rolí, ukončení procesů, atd. Development Privilege přístup k ladícím a vývojovým prostředkům v Caché přístup k ladícím a vývojovým prostředkům v Caché debugging, spouštění Caché Studia, atd.
Jak zjistit svoje práva? $SYSTEM.Security.Check(“%DB/Samples”, “WRITE”) vrací True nebo False podle toho, jestli proces vlastní nebo nevlastní Write právo do databáze Samples vrací True nebo False podle toho, jestli proces vlastní nebo nevlastní Write právo do databáze Samples$SYSTEM.Security.Check(“%DB/Samples”) vrací seznam přidělených práv oddělený čárkami vrací seznam přidělených práv oddělený čárkami
Role skupina práv každý uživatel má přidělenou určitou roli v Caché Adv.Security mohou být privilege přidělovány pouze rolím, nikoli přímo uživatelům předdefinované role %Public, %Developer, %Manager, %Operator %Public, %Developer, %Manager, %Operator Manager může téměř vše Manager může téměř vše
%All existuje vždy zahrnuje všechna práva ke všem prostředkům v Caché nelze ji měnit ani smazat v systému musí existovat alespoň jeden uživatel s touto rolí administrátor administrátor
Uživatelské účty jméno a plné jméno povoleno? datum vypršení povolení seznam rolí datum a čas posledního přístupu předdefinované Admin = %Manager Admin = %Manager SuperUser = %All SuperUser = %All
Co když … ? jedinou možností, jak vymazat nastavení zabezpečení, je celkové přeinstalování systému
Autentifikace uživatelů heslo standardní, minimální délka, atd. standardní, minimální délka, atd. vlastní databáze, uloženo v hashované podobě vlastní databáze, uloženo v hashované podobě operační systém Kerberos jen kde je nutné velké zabezpečení dat jen kde je nutné velké zabezpečení dat identifikace v propojení client/server identifikace v propojení client/server
Logování při jakémkoli přístupu do Caché se musí uživatel identifikovat i přes CSP, atd. i přes CSP, atd. informace o zalogovaném uživateli %USERNAME %USERNAME %ROLES %ROLES
Práva uživatelů/aplikace každá aplikace může obsahovat svoje přístupová práva do systému například u CSP, nebo při přístupu přes SQL například u CSP, nebo při přístupu přes SQL
Závěrem pokud zabezpečení není nutné, vypněte všechny tyto prostředky!!! pokud zabezpečení není nutné, vypněte všechny tyto prostředky!!!