search cancel

ディザスタリカバリのための DCS データベースのバックアップと復元

book

Article ID: 242608

calendar_today

Updated On:

Products

Critical System Protection Data Center Security Server Data Center Security Monitoring Edition Data Center Security Server Advanced

Issue/Introduction

ディザスタリカバリのために Data Center Security (DCS) または Symantec Critical System Protection (SCSP) の完全なバックアップを作成したい。

壊滅的な障害が発生した場合、データベースを迅速に復元できるような完全なバックアップをとっておきたい。

Environment

  • Windows 2003/2008/2012/2019
  • SQL 2005/2012/2016/2019

Resolution

この手順はデータベースをあるサーバーから別のサーバーに移動する場合にも使用できます。追加手順が必要な場合があります。 (新しいサーバーを指すように server.xml を変更する) 。

サーバの完全なバックアップを作成するには:

1.  SCSP サーバーの場合、以下のファイルをコピーしてバックアップします。

    • <インストールディレクトリ>\symantec\critical system protection\server\agent-cert.ssl
    • <インストールディレクトリ>\symantec\critical system protection\server\server-cert.ssl
    • <インストールディレクトリ>\symantec\critical system protection\server\ui-cert.ssl
    • <インストールディレクトリ>\symantec\critical system protection\server\tomcat\conf\server.xml

DCS:SA サーバーの場合、以下のファイルをコピーしてバックアップします。

    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\agent-cert.ssl
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\sss.ssl
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\umcserver.ssl
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\server-cert.ssl
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\rootkey.ssl
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\tomcat\conf\server.xml
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\tomcat\conf\quartz.properties
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\umc\umc.properties
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\umc\ssl\umcCA\certs (backup the entire certs folder)
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\jre\lib\security\cacerts

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 などのように名前を変更します。

    • <インストールディレクトリ>\symantec\critical system protection\server\agent-cert.ssl
    • <インストールディレクトリ>\symantec\critical system protection\server\server-cert.ssl
    • <インストールディレクトリ>\symantec\critical system protection\server\ui-cert.ssl
    • <インストールディレクトリ>\symantec\critical system protection\server\tomcat\conf\server.xml

DCS:SA サーバーの場合、以下のファイルやフォルダーの名前を変更します。

    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\agent-cert.ssl
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\sss.ssl
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\umcserver.ssl
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\server-cert.ssl
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\rootkey.ssl
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\tomcat\conf\server.xml
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\tomcat\conf\quartz.properties
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\umc\ssl\umcCA\certs
    • <インストールディレクトリ>\Symantec\Data Center Security Server\Server\jre\lib\security\cacerts

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. 管理コンソールにログインし接続を確認します。

Additional Information

[英語文書] Backup and restore DCS database for disaster recovery