ディザスタリカバリのために Data Center Security (DCS) または Symantec Critical System Protection (SCSP) の完全なバックアップを作成したい。
壊滅的な障害が発生した場合、データベースを迅速に復元できるような完全なバックアップをとっておきたい。
この手順はデータベースをあるサーバーから別のサーバーに移動する場合にも使用できます。追加手順が必要な場合があります。 (新しいサーバーを指すように server.xml を変更する) 。
1. SCSP サーバーの場合、以下のファイルをコピーしてバックアップします。
DCS:SA サーバーの場合、以下のファイルをコピーしてバックアップします。
2. Microsoft SQL Server Management Studio にログインします。
3. SCSPDB を右クリックして [タスク] - [バックアップ] を選択します。注: マスターデータベースのバックアップを含む "フルバックアップ "オプションを使用することを推奨します。(DCS の場合 dcs_umc データベースもバックアップしてください) 。
4. データベースのフルバックアップを作成した後、セキュリティログインアカウントもバックアップします。これらのユーザーは、データベースのバックアップの際にはバックアップされません。これらのユーザーは MS SQL スクリプト (Transfer logins and passwords between instances of SQL Server) を使用してコピーする必要があります)。
このスクリプトを実行するには、Microsoft SQL Server Management Studio にログインします。
5. Microsoft SQL Server Management Studio で [新しいクエリ] をクリックします。クエリウィンドウに以下をコピーします。
USE master
GO
IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
DROP PROCEDURE sp_hexadecimal
GO
CREATE PROCEDURE sp_hexadecimal
@binvalue varbinary(256),
@hexvalue varchar (514) OUTPUT
AS
DECLARE @charvalue varchar (514)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
WHILE (@i <= @length)
BEGIN
DECLARE @tempint int
DECLARE @firstint int
DECLARE @secondint int
SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
SELECT @firstint = FLOOR(@tempint/16)
SELECT @secondint = @tempint - (@firstint*16)
SELECT @charvalue = @charvalue +
SUBSTRING(@hexstring, @firstint+1, 1) +
SUBSTRING(@hexstring, @secondint+1, 1)
SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
GO
IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
DROP PROCEDURE sp_help_revlogin
GO
CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
DECLARE @name sysname
DECLARE @type varchar (1)
DECLARE @hasaccess int
DECLARE @denylogin int
DECLARE @is_disabled int
DECLARE @PWD_varbinary varbinary (256)
DECLARE @PWD_string varchar (514)
DECLARE @SID_varbinary varbinary (85)
DECLARE @SID_string varchar (514)
DECLARE @tmpstr varchar (1024)
DECLARE @is_policy_checked varchar (3)
DECLARE @is_expiration_checked varchar (3)
DECLARE @defaultdb sysname
IF (@login_name IS NULL)
DECLARE login_curs CURSOR FOR
SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
sys.server_principals p LEFT JOIN sys.syslogins l
ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'
ELSE
DECLARE login_curs CURSOR FOR
SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM
sys.server_principals p LEFT JOIN sys.syslogins l
ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_name
OPEN login_curs
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
IF (@@fetch_status = -1)
BEGIN
PRINT 'No login(s) found.'
CLOSE login_curs
DEALLOCATE login_curs
RETURN -1
END
SET @tmpstr = '/* sp_help_revlogin script '
PRINT @tmpstr
SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
PRINT @tmpstr
PRINT ''
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
PRINT ''
SET @tmpstr = '-- Login: ' + @name
PRINT @tmpstr
IF (@type IN ( 'G', 'U'))
BEGIN -- NT authenticated account/group
SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'
END
ELSE BEGIN -- SQL Server authentication
-- obtain password and sid
SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )
EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT
EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT
-- obtain password policy state
SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name
SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'
IF ( @is_policy_checked IS NOT NULL )
BEGIN
SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked
END
IF ( @is_expiration_checked IS NOT NULL )
BEGIN
SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked
END
END
IF (@denylogin = 1)
BEGIN -- login is denied access
SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
END
ELSE IF (@hasaccess = 0)
BEGIN -- login exists but does not have access
SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
END
IF (@is_disabled = 1)
BEGIN -- login is disabled
SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
END
PRINT @tmpstr
END
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
END
CLOSE login_curs
DEALLOCATE login_curs
RETURN 0
GO
これにより、マスターデータベースに 2 つのストアドプロシージャが作成されます。このプロシージャは sp_hexadecimal と sp_help_revlogin という名前です。
次に別の新規クエリを開いて以下を実行します。
EXEC sp_help_revlogin
SID を持つログインが出力されます。
6. 出力をメモ帳にコピーし SCSPusers.txt として保存します。これでデータベースが破損した場合に完全に復元するために必要なすべてのものが揃いました。
1. SCSP サーバとコンソールをインストールします。インストールオプションで "Install Tomcat and create the database schema" を選択し、SQL サーバに向けます。
2. インストール後 Symantec Critical System Protection Server (または Symantec Data Center Security Server Manager) サービスを停止し (DCS の場合は Symantec UMC Credential および UMC Telemetry サービスも停止)、SCSPDB データベースを (DCS の場合は dcs_umc データベースも) 削除してください。
また [セキュリティ] - [ログイン] で次のセキュリティアカウントも削除します。
SCSP の場合: scsp_ops、scsp_plugin、scspdba
DCS の場合: scsp_ops、scspdba、umcadmin
3. Microsoft SQL Server Management Studio で Master データベースを右クリックし [復元] - [データベース] を選択します。
4. マスターデータベースのリストアを推奨します。デバイスを選択してバックアップを参照します。必ず [Restore] のチェックボックスをクリックします。転送先を SCSPDB に変更し OK をクリックします。DCS の場合、dcs_umcデータベースもリストアします。
5. [新しいクエリ] をクリックして保存した "SCSPusers.txt "を開き、このテキストを新しいクエリウィンドウにコピーします。[実行] をクリックします。SA と管理者アカウントは既に存在すると表示されるはずです。
6. [新しいクエリ] をクリックして以下のクエリを実行し、scsp_ops ユーザーの適切なパーミッションを復元します。
Use master;
GRANT IMPERSONATE ON LOGIN::scspdba TO [scsp_ops];
GO
7. Microsoft SQL Server Management Studio でインスタンスを右クリックし、[再起動] を選択します。
8. セキュリティログインに移動します。 手順 2 の SCSP/DCS アカウントがあるはずです。(表示させるために更新ボタンをクリックする必要があるかもしれません。)
9. SCSP サーバーの場合、以下のファイルを agent-certold.ssl、server-certold.ssl などのように名前を変更します。
DCS:SA サーバーの場合、以下のファイルやフォルダーの名前を変更します。
10. これらのファイル名をすべて変更したら、バックアップ取得済みのこれらのファイルを同じディレクトリの同じ場所にコピーします。
DCS の場合は手順 11 ~ 12 に進みます。SCSP の場合は手順 13 に進みます。
11. バックアップした umc.properties を開きます。以下の行を探し、'=' 記号の後に表示されるテキストをコピーします。
UMC_TRUSTSTORE_PASSWORD = xXxXxXxXxXxXxXxXx <- このテキストをコピーします (ここに示されているものとは異なります) 。
12. <インストールディレクトリ>\Symantec\Data Center Security Server\Server\umc\umc.properties ファイルを開いて次の行を見つけ、パスワード ('=' 記号の後のテキスト) を手順 10 でコピーしたものに置き換えてファイルを保存します。
UMC_TRUSTSTORE_PASSWORD = xXxXxXxXxXxXxXxXx <- このテキストを手順 10 でコピーしたパスワードに置き換えます (ここに示されているものとは異なります)。
13. Symantec Critical System Protection Server (または Symantec Data Center Security Server Manager) サービスを開始し (DCS の場合は Symantec UMC Credential および UMC Telemetry サービスも開始します)、数分待ちます。
14. 管理コンソールにログインし接続を確認します。