Pokročilé hledání             

HELIOS iNuvio      FAQ     Uživatelský panel    

Registrovat     Přihlásit se

    Obsah fóra> Časté dotazy> Systémové dotazy
    Verze pro tisk

Aplikační role Helios Orange

Zapisují se opakující se dotazy na řešení systémových problémů z provozu Helios Orange. Patří sem dotazy typu "Po instalaci SQL serveru se nemohu přihlásit do Heliosu." apod.

Moderátor: orange_moderator

Odeslat odpověď
Příspěvků: 4 • Stránka 1 z 1
  • Odpovědět s citací

Aplikační role Helios Orange

Příspěvekod jan.havranek v 30.03.2007 08:48

Uživatelé HELIOS Orange přidaní do databáze prostřednictvím programu mají standardně (by design) na MS SQL Serveru práva role db_owner. Toto může být vnímáno jako bezpečnostní riziko. Řešením je použití tzv. Aplikační role.

Aplikační role slouží k zamezení přístupu k databázi jinými prostředky než pomocí aplikace Helios Orange.
Finta spočívá v tom, že uživatel má v databázi pouze roli Public (tudíž se k ní nedostane nástroji SQL).
Uživatel se přihlašuje nadále svým jménem a má nastavena vlastní práva na přehledy a akce, Helios však přistupuje k databázi pomocí aplikační role.

Podmínky provozu aplikační role:
  • Role sysadmin (sa, BUILTIN\Administrators apod.) se nikdy nepřihlašuje přes aplikační roli, tzn. vždy má plná práva a přístup.
  • Nastavení Role a přiřazení Role do Heliosu musí provést sysadmin.
  • Pokud je nastaven přístup přes aplikační roli, nelze se v rámci Heliosu přepínat mezi firmami.
  • Každá databáze má svůj svébytný přístup, jako by to byla samostatná instalace a pro každou firmu musí existovat specifický zástupce Helios Orange
  • Na SQL od verze 2005 a vyšších je třeba aby heslo aplikační role splňovalo bezpečnostní politiky domény, obvykle tedy musí mít 6 a více znaků a musí obsahovat čísla písmena a speciální znaky.
  • Heslo nesmí obsahovat národní znaky (diakritika).
  • Role v různých databázích může mít stejné jméno i heslo.
  • V okamžiku použití aplikační role mají právo do Heliosu všichni, kdo jsou minimálně Public (vidím je v seznamu uživatelů, ale nejsou zařazeni do databáze).

Jak vytvořit a použít aplikační roli:
1/Nejprve skriptem na SQL Server založit v potřebných databázich aplikační roli a nastavit jí práva vlastníka (db_owner).
Tento skript použít postupně na všech databázích Heliosu.
Kód: Vybrat vše
USE [JménoDatabáze]
CREATE APPLICATION ROLE [JménoRole] WITH DEFAULT_SCHEMA=[dbo], PASSWORD='SilnéHeslo'
GO
EXEC [JménoDatabáze]..sp_addrolemember 'db_owner', 'JménoRole'
GO


2/Pro každou databázi musí být vytvořen zvláštní zástupce Heliosu, do Cíle se na konci uvede řádkovým parametrem -D jméno otevírané databáze a parametr -F0.
např.:
Kód: Vybrat vše
zástupce 1. Cíl: "\\Server\Helios IQ\Helios.EXE" -DHelios001 -F0
zástupce 2. Cíl: "\\Server\Helios IQ\Helios.EXE" -DHelios002 -F0
zástupce 3. Cíl: "\\Server\Helios IQ\Helios.EXE" -DHelios003 -F0

apod.

3/Pomocí zástupce spustit postupně Helios do každé databáze (jako sysadmin).
Pokud se objeví dialog změny tabulek (TabSetup, TabDBHelios, TabUserCfg) tak potvrdit.
Přidat a zase odebrat uživatele do a z databáze.
V menu Možnosti - Konfigurace/Správa systému - přehled Systémové konstanty - Oprava na databázi, kde chci použít aplikační roli - záložka Aplikační role, vybrat roli a zadat heslo role.

=============================

Další užitečné skripty pro práci s aplikační rolí.

Odebrání práv aplikační roli:
Kód: Vybrat vše
EXEC [JménoDatabáze]..sp_droprolemember 'db_owner', 'JménoRole'


Dodatečná změna hesla pro aplikační roli (Pozor!!! je třeba upravit heslo i v Heliosu):
Kód: Vybrat vše
EXEC [JménoDatabáze]..sp_approlepassword 'JménoRole','NovéSilnéHeslo'


Smazání aplikační role v databázi:
Kód: Vybrat vše
EXEC [JménoDatabáze]..sp_dropapprole 'JménoRole'
jan.havranek
 
Příspěvky: 217
Registrován: 03.10.2006 08:51
Firma: Asseco Solutions, a.s.
Nahoru

  • Odpovědět s citací

Aplikační role - chyba při Update

Příspěvekod jan.havranek v 30.07.2009 07:33

Na SQL2005 a vyšším nemá aplikační role oprávnění spustit Kontrolu konzistence databáze, myšleno databázovou kontrolu integrity pomocí příkazu DBCC CHECKDB, resp. DBCC CHECKCATALOG (na starších verzích SQL to šlo). To se projeví chybovou hláškou pokud při spuštění změnových skriptů po Update nechám zaškrtnuto Před provedením změn zkontrolovat konzistenci databáze.

aprole_update.gif
Chyba při spuštění kontroly konzistence
aprole_update.gif (7.58 KiB) Zobrazeno 11298 krát

Tato chyba se projeví jen běžným uživatelům, administrátor SQL problém nemá. Pokud má update provádět i běžný uživatel, musí políčko kontroly odškrtnout.
jan.havranek
 
Příspěvky: 217
Registrován: 03.10.2006 08:51
Firma: Asseco Solutions, a.s.
Nahoru

  • Odpovědět s citací

Odebrání všech práv na databázové objekty

Příspěvekod jiri.dolezal v 18.06.2012 09:06

Odebráním uživatele z role db_owner mu odebereme práva na většinu databázových objektů (zejm. tabulek). Uživatel však může mít explicitně přidělena práva mimo roli db_owner (většinou tabulky TabUserCfg, TabSetup, TabDBHelios).

Role public (v jejímž kontextu přistupují k databází uživatelé po odebrání z role db_owner) má rovněž aplikací přidělenu celou řadu práv na objekty typu Uložená procedura a View.

Výše zmíněné může být vnímáno jako nežádoucí z hlediska zabezpečení (důvod pro užití Aplikační role).

Pro odebrání veškerých práv (uživateli / roli) na databázové objekty uživatelského typu, vyjma těch které jsou pro chod aplikace bezpodminečně nutné (právo EXECUTE pro uloženou proceduru dbo.hp_StartIQ) lze použít následující skript:

Kód: Vybrat vše
-- * Odeber všechna práva na user objekty v DB

SET NOCOUNT ON;

DECLARE @ExecSQL NVARCHAR(4000);
DECLARE @Grantee NVARCHAR(128);
DECLARE @Object NVARCHAR(128);
DECLARE @Action NVARCHAR(128);

SET @Grantee = 'public';  -- změnit dle potřeb / NT_USERS bez hranatých závorek

-- naplníme tabulku s objekty
IF OBJECT_ID('tempdb..#TempPrava') IS NOT NULL
   DROP TABLE #TempPrava;
CREATE TABLE [#TempPrava](
     [Owner] sysname NULL
    ,[Object] sysname NULL
    ,[Grantee] sysname NULL
    ,[Grantor] sysname NULL
    ,[ProtectType] [nvarchar](10) NULL
    ,[Action] [nvarchar](60) NULL
    ,[Column] sysname NULL
    );

INSERT INTO #TempPrava
EXEC sp_helprotect @username = @Grantee;

-- smažeme vše co není dbo + povinné objekty
DELETE FROM #TempPrava
WHERE [Owner] <> N'dbo'
   OR [Object] IN (N'hp_StartIQ');

SET @Grantee = QUOTENAME(@Grantee);

DECLARE CurRev CURSOR LOCAL FAST_FORWARD FOR
   SELECT
      [Object]
      ,[Action]
   FROM #TempPrava
   WHERE ProtectType = N'Grant';
OPEN CurRev;
FETCH NEXT FROM CurRev INTO @Object, @Action;
   WHILE (@@FETCH_STATUS = 0) AND (@@ERROR = 0)
   BEGIN
      -- zacatek akce v kurzoru CurRev
      
      SET @ExecSQL = N'REVOKE ' + @Action + ' ON dbo.' + @Object + ' FROM ' + @Grantee;
      EXEC sp_executesql @ExecSQL;
      
      -- konec akce v kurzoru CurRev
   FETCH NEXT FROM CurRev INTO  @Object, @Action;
   END;
CLOSE CurRev;
DEALLOCATE CurRev;


Upozornění!
Nelze vyloučit, že v průběhu následujícího provozu, zejm. v rámci aktualizací programu, aplikace znovu stanoví práva na některé objekty pro roli public.
jiri.dolezal
 
Nahoru

  • Odpovědět s citací

Aplikační role - nemožnost změny hesla

Příspěvekod jiri.dolezal v 01.11.2017 15:23

Je-li používána aplikační role pro spouštění HELIOSu a uživatel není členem sysadmin role na SQL serveru, pak snaha o změnu hesla v HELIOS skončí chybou:

Kód: Vybrat vše
[SQL:15007,16] '{login}' is not a valid login or you do not have permission.


Toto je důsledek použití aplikační role a změna hesla touto cestou není možná.
jiri.dolezal
 
Příspěvky: 60
Registrován: 23.03.2017 12:58
Firma: Asseco Solutions a.s.
Nahoru


Odeslat odpověď
Příspěvků: 4 • Stránka 1 z 1

Zpět na Systémové dotazy

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

         
  • Tým • Smazat všechny cookies z fóra • Všechny časy jsou v UTC + 1 hodina
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group, Český překlad – phpBB.cz

© copyright 2011 Asseco Solutions, a.s.
hotline Helios Orange
+420 244 104 155
hotline.orange@assecosol.cz