MS SQLを使用して、SIDによってユーザーのログインを決定します

こんにちは。 DBA管理者(Microsoft Dynamics NAV)として、一部の従業員のSQL db_datareaderロールの存在を発行/確認するタスクが発生しました。 しかし、テーブルでは、ユーザーのリストはSIDウィンドウの形式で保存されました:S-1-5-21-3879 ...そして、エントリは常に追加されていました。 つまり、S-1-5-21-38から変換する必要がありました...→aapetrov。

約70台のサーバーがあり、標準ツールですべてを実行したかった( psgetsid.exeなどは使用しないでください )。

予想通り、私はGoogleから始めました-何も役に立つものが見つかりませんでした。 尊敬されるフォーラムで助けを求めなければなりませんでした。 多くの選択肢が提案されましたが、その多くは善良な人々のおかげですが、残念ながら解決策は見つかりませんでした。
「sql.ruのメンバーでさえわからない場合は、それで終わりだと思いました。」


そして、神経衰弱の寸前で、問題はまだ解決することができました。

まず、少しの理論。 SID(S-1-5-21-3879291865-2298129343-1096376209-3741)を部分的に分析してみましょう:
詳細についてはこちらをご覧ください

これでスクリプト自体。 私の意見では、関数を作成し、パラメーターを指定して呼び出すことをお勧めします。

-- , .

IF OBJECT_ID (N'dbo.StringSIDToLogin', N'FN') IS NOT NULL
DROP FUNCTION dbo.StringSIDToLogin
GO
CREATE FUNCTION dbo.StringSIDToLogin (@MYSID AS VARCHAR(255))
RETURNS VARCHAR(300)
AS
BEGIN

--

DECLARE @A AS BIGINT ,@B AS BIGINT ,@C AS BIGINT ,@D AS BIGINT
SET @MYSID = REVERSE(@MYSID)
SET @D = REVERSE(SUBSTRING(@MYSID,1,CHARINDEX('-',@MYSID)-1))
SET @MYSID = SUBSTRING(@MYSID,CHARINDEX('-',@MYSID)+1,255)
SET @C = REVERSE(SUBSTRING(@MYSID,1,CHARINDEX('-',@MYSID)-1))
SET @MYSID = SUBSTRING(@MYSID,CHARINDEX('-',@MYSID)+1,255)
SET @B = REVERSE(SUBSTRING(@MYSID,1,CHARINDEX('-',@MYSID)-1))
SET @MYSID = SUBSTRING(@MYSID,CHARINDEX('-',@MYSID)+1,255)
SET @A = REVERSE(SUBSTRING(@MYSID,1,CHARINDEX('-',@MYSID)-1))
declare @sid_sql VARBINARY(100)
DECLARE @StrLogin VARCHAR(100)
set @sid_sql= 0x010500000000000515000000
+ CONVERT(VARBINARY,REVERSE(CONVERT(BINARY(4),@A)))
+ CONVERT(VARBINARY,REVERSE(CONVERT(BINARY(4),@B)))
+ CONVERT(VARBINARY,REVERSE(CONVERT(BINARY(4),@C)))
+ CONVERT(VARBINARY,REVERSE(CONVERT(BINARY(4),@D)))

-- MS SQL

set @StrLogin=SUSER_SNAME(@sid_sql)
set @StrLogin=REPLACE (@StrLogin,'dom\','')
RETURN (@StrLogin)
END
GO


関数を呼び出すだけです。

SELECT dbo.StringSIDToLogin('S-1-5-21-1106671424-631848431-2339101832-7032') AS [Login]

ここでは、簡単なことがわかりました。 そして、アイデア自体がフォーラムで提案されました 。 ありがとう

PS:ハブロウザーに感謝します: rachiu、Zorkus、FeNUMe、Atrax、AusTiNのサポートと新人に対する人間の態度。

Source: https://habr.com/ru/post/J111978/


All Articles