Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để chỉ định một mật khẩu mạnh SA khi bạn cài đặt SQL Server 2000 công cụ máy tính để bàn (MSDE 2000)

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:814463
Khước từ Nội dung trong Cơ sở Kiến thức Không còn được hỗ trợ
Bài viết này nói về các sản phẩm mà Microsoft không còn hỗ trợ nữa. Do đó, bài viết này được cung cấp "nguyên bản" và sẽ không được cập nhật.
TÓM TẮT
Bài viết này mô tả cách để chỉ định một mạnh mẽ sa mật khẩu khi bạn cài đặt SQL Server Desktop công cụ (cũng được biết đến như MSDE 2000).
THÔNG TIN THÊM
Bạn phải gán một mật khẩu mạnh để các sa tài khoản trong khi cài đặt bất kỳ trường hợp của SQL Server Năm 2000 để bàn công cụ (MSDE 2000). Bạn phải làm điều này, ngay cả khi trường hợp bằng cách sử dụng Chế độ xác thực của Windows. Các sa trương mục không thể được sử dụng bởi bất kỳ người dùng khi chạy trong Windows Chế độ xác thực; Tuy nhiên, các ví dụ có thể sau này được chuyển sang chế độ hỗn hợp, và các sa tài khoản sẽ trở thành một đăng nhập đang hoạt động.

Nếu sa tài khoản có mật khẩu trống, trống, đơn giản, hoặc nổi tiếng khi một thể hiện của MSDE 2000 chuyển sang chế độ hỗn hợp, ví dụ MSDE có thể truy cập của người dùng không được phép. Các sa trương mục không thể được giảm xuống, và nó luôn luôn phải được bảo vệ với một mật khẩu mạnh để giúp hạn chế truy cập trái phép. Bất kỳ người dùng nào người thu truy cập để một thể hiện của MSDE 2000 bằng cách sử dụng các sa tài khoản, có thể chiếm quyền kiểm soát đầy đủ ngày mà dụ MSDE, và có khả năng truy cập vào bất kỳ tài nguyên nào tài khoản dịch vụ MSDE có. Bởi mặc định, tài khoản dịch vụ MSDE là các LocalSystem Built-in bảo mật tài khoản.

Để biết thêm thông tin về mật khẩu mạnh, truy cập Microsoft Web site sau:

Bảo mật Quy tắc

Bạn có thể sử dụng ứng dụng tùy chỉnh mã để cài đặt MSDE. Ứng dụng mã phải sử dụng một trong hai phương pháp sau đây để thiết lập các sa mật khẩu:
  • Nếu người dùng là sẽ thiết lập MSDE trong chế độ hỗn hợp, và là sẽ sử dụng các sa tài khoản, yêu cầu một mật khẩu mạnh mẽ cho các sa tài khoản của người dùng. Sử dụng mật khẩu trong MSDE thiết lập.
  • Nếu sa tài khoản không được sử dụng, tạo ra một chuỗi ngẫu nhiên và sau đó vượt qua mà String như là các sa mật khẩu để thiết lập MSDE.

Để giúp cải thiện an ninh, bạn nên không cứng mã các sa mật khẩu được gán lúc thiết lập như một tham số trong một tập tin Setup.ini, hoặc như một dấu nhắc lệnh chuyển trong một tập tin lệnh (.cmd), hoặc bao gồm nó như là một bất động sản trong một file MSI, hoặc trong bất cứ cách nào khác mà có thể lộ mật khẩu như văn bản thuần. Mật khẩu nên được tự động tạo ra bởi một ứng dụng chương trình thiết lập tại thời gian chạy, và nó nên được thông qua với quá trình thiết lập MSDE trong một trong những cách sau đây:
  • Chạy MSDE setup.exe từ ứng dụng cài đặt mã, và chỉ định một giá trị SAPWD trong các đối số.

    Ví dụ, chạy thiết lập bởi bằng cách sử dụng các.NET Framework Quá trình lớp, và sau đó chỉ ra SAPWD trong các Đối số ProcessStartInfo bất động sản, hoặc chạy các thiết lập bằng cách sử dụng Win32 CreateProcess chức năng, và sau đó chỉ ra SAPWD trong các lpCommandLine tham số.


    Để biết thêm thông tin về dòng lệnh SAPWD tham số, bấm số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
    810826Thiết bị chuyển mạch mới trong MSDE Service Pack 2 Setup
  • Thực hiện một hành động tùy chỉnh để vượt qua một mật khẩu mạnh khi bạn sử dụng mô-đun merge MSDE trong một tuỳ chỉnh Windows Installer dựa trên thiết lập.

Chú ý Bạn không thể đặt mật khẩu cho các sa tài khoản trong lúc thiết lập MSDE 2000 bằng cách sử dụng Windows Chế độ xác thực. Trong trường hợp này, bạn phải đặt mật khẩu sau khi các thiết lập đã hoàn tất. Microsoft mạnh mẽ khuyến cáo bạn sử dụng các dịch vụ mới nhất gói cài đặt MSDE 2000.

Các phương pháp mà Microsoft khuyến cáo bạn sử dụng để tạo ra một ngẫu nhiên mật khẩu là sử dụng các Crypto API chức năng như:
  • CryptAcquireContext
  • CryptGenRandom
  • CryptCreateHash
  • CryptHashData
Nếu bạn đang sử dụng bản xứ mã, sử dụng CryptReleaseContext.

Nếu bạn đang sử dụng quản lý mã, sử dụng System.Security.cryptography.RNGCryptoServiceProvider để có được một chuỗi mã hóa ngẫu nhiên, và sau đó băm giá trị mà được trả lại bằng cách sử dụng các ComputeHash phương pháp của các System.Security.cryptography.SHA1 lớp học. Chuỗi ngẫu nhiên phải biến đổi chiều dài, giữa 7 và 20 ký tự.

Nếu bạn quên các sa mật khẩu, hoặc bạn không biết những gì các sa mật khẩu là, và ví dụ được chuyển đổi sang chế độ hỗn hợp, một thành viên của các Ilos vai trò máy chủ cố định có thể đặt lại các sa mật khẩu mà không biết mật khẩu trước. Theo mặc định, tất cả các người sử dụng là thành viên của nhóm quản trị viên địa phương là thành viên của các Ilos vai trò. Các thành viên của các Ilos vai trò có thể thay đổi một thể hiện MSDE từ chế độ xác thực của Windows chế độ hỗn hợp hoặc ngược lại, và có thể thay đổi các sa mật khẩu. Do đó, lý do an ninh, bạn có thể muốn loại bỏ các Nhóm người quản trị từ Ilos vai trò.

Để biết thêm thông tin về làm thế nào nhóm người quản trị có thể loại bỏ khỏi vai trò General, nhấp vào số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
263712Làm thế nào để cản trở quản trị viên Windows NT từ quản lý một trường hợp cụm của SQL Server


Để biết thêm về việc thay đổi mật khẩu cho sa tài khoản, nhấp vào số bài viết sau đây để xem bài viết trong cơ sở kiến thức Microsoft:
322336Làm thế nào để xác minh và thay đổi mật khẩu người quản trị hệ thống trong MSDE hoặc SQL Server 2005 Express Edition

Chú ý Những phương pháp cho việc thay đổi các sa mật khẩu trong khi cài đặt được liệt kê trong bài viết này chỉ áp dụng cho mới cài đặt của MSDE.

Các bước sau sử dụng mã nguồn mẫu để tạo ra một ngẫu nhiên sa mật khẩu và sau đó bắt đầu tiến trình cài đặt MSDE.

Bằng cách sử dụng Microsoft Visual C++.NET

  1. Nhấp vào Bắt đầu, điểm đến Tất cả các Chương trình, điểm đến Microsoft Visual Studio.NET, điểm đến Visual Studio.NET Tools, sau đó bấmVisual Studio.NET Command Prompt.
  2. Mở Notepad.
  3. Dán mã sau đây trong Notepad::
    #pragma once#define WIN32_LEAN_AND_MEAN		// Exclude rarely-used stuff from Windows headers.#define UNICODE#include <stdio.h>#include <windows.h>#include <wincrypt.h>#ifdef UNICODE	#define STRNCPY	wcsncpy#else	#define STRNCPY strncpy#endif#include <atlenc.h>#define SAPWDSWITCH _T("SAPWD=")#define INSTANCENAME _T("INSTANCENAME=MSDETEST")BOOL GenPwd(TCHAR*, int);void DisplayError (DWORD);int main(void){		//Generate random length for password, between 7 and 20 characters.	int nPwdLen = ((rand() % 20) + 7) + 1;	//Extra character for null terminator	TCHAR* pPwd = new TCHAR[nPwdLen];	UINT uRes = 0;	DWORD dwRes = 0;	if (!GenPwd(pPwd, nPwdLen))	{		//Failed to generate a password, log the error and return failure.		dwRes = GetLastError();		DisplayError(dwRes);		return dwRes;	}        STARTUPINFO si;        PROCESS_INFORMATION pi;        ZeroMemory( &si, sizeof(si) );        si.cb = sizeof(si);        ZeroMemory( &pi, sizeof(pi) );	//Allocate a string for the command line.	LPTSTR lpCommand = new TCHAR[nPwdLen + _tcslen(INSTANCENAME) + _tcslen(SAPWDSWITCH) + 2];	_stprintf(lpCommand, _T("%s %s%s"),INSTANCENAME,  SAPWDSWITCH, pPwd);// Specify the complete path of Setup.exe.	if (!CreateProcess(_T("setup.exe"), lpCommand, NULL, NULL, FALSE, 				0, NULL, NULL, &si, &pi))	{		dwRes = GetLastError();		DisplayError(dwRes);	}	return 0;}//Generates a Random string of length nLen - 1.  Buffer ppwd must allocate an extra character for null terminator.//Returns TRUE if successful, FALSE if fails.//Extended error information can be obtained from GetLastError().BOOL GenPwd(TCHAR* ppwd, int nLen){	BOOL bResult = FALSE;	//assume failure	HCRYPTPROV hProv = NULL;	HCRYPTHASH hHash = NULL;		//Storage for random string 4 times longer than the resulting password.	DWORD dwBufSize = nLen*4;	DWORD dwSize = Base64EncodeGetRequiredLength((int)dwBufSize);	LPSTR pEncodedString = NULL;	LPBYTE pRandomBuf = NULL;	TCHAR* pTRandomPwd = NULL;		try	{		pEncodedString = new char[dwSize];		pRandomBuf = new BYTE[dwBufSize];				// Try to acquire context to Crypto provider.		if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_SILENT))		{			if (GetLastError() == NTE_BAD_KEYSET) //Test for non-existent keyset			{				if (!CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, CRYPT_SILENT | CRYPT_NEWKEYSET))					throw(GetLastError());			}			else				throw(GetLastError());		}		//Generate a random sequence.		if (!CryptGenRandom(hProv, dwBufSize, pRandomBuf))		{			throw(GetLastError());		}		//Get a handle to a hash, then hash the random stream.		if (!CryptCreateHash(hProv, CALG_SHA1, 0, 0, &hHash))		{			throw(GetLastError());		}		if (!CryptHashData(hHash, pRandomBuf, dwBufSize, NULL))		{			throw(GetLastError());		}			//Destroy the hash object.		CryptDestroyHash(hHash);		//Release Provider context		CryptReleaseContext(hProv, 0);				//Encode the hash value to base64.		if (!Base64Encode(pRandomBuf, dwBufSize, pEncodedString, (int*) &dwSize, 0))		{			throw(GetLastError());		}			//Determine how many tchars you need to convert string to base64.		int nTchars = (int) strlen(pEncodedString);			pTRandomPwd = new TCHAR[nTchars];	#ifdef UNICODE		if (MultiByteToWideChar(CP_UTF8, 0, pEncodedString, nTchars, pTRandomPwd, nTchars) == 0)		{			throw(GetLastError());		}#else		STRNCPY( pTRandomPwd, pEncodedString, nLen);#endif		//Copy the first x characters of random string to output buffer.		STRNCPY(ppwd, pTRandomPwd, nLen);		//Add null terminator to ppwd string.		ppwd[nLen] = _T('\0');		bResult = TRUE;	}	catch (DWORD)	{		//Set return value to false.		bResult = FALSE;	}	catch (...)	{		//Unknown error, throw. 		throw;	}	//Clean up memory.	if (pRandomBuf)	{		delete pRandomBuf;		pRandomBuf = NULL;	}	if (pEncodedString)	{		delete pEncodedString;		pEncodedString = NULL;	}	if (pTRandomPwd)	{		delete pTRandomPwd;		pTRandomPwd = NULL;	}	return bResult;}void DisplayError (DWORD dwError){	//Resolve the error code to a message string.	LPCTSTR MessageBuffer;	DWORD dwBufferLength = FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_IGNORE_INSERTS | FORMAT_MESSAGE_FROM_SYSTEM,		NULL, // module to get message from (NULL == system)		dwError,		MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language.		(LPTSTR) &MessageBuffer,		0,		NULL		);	DWORD dwBytesWritten;	// Output message string on stderr.	WriteFile(		GetStdHandle(STD_ERROR_HANDLE),		MessageBuffer,		dwBufferLength,		&dwBytesWritten,		NULL		);}
  4. Lưu các tập tin như StrongSA.cpp.
  5. Tại dấu nhắc lệnh, gõ lệnh sau để biên dịch mã:

    CL strongSA.cpp
  6. Tại dấu nhắc lệnh, gõ lệnh sau đây để chạy Mã:

    strongSA.exe

Bằng cách sử dụng Microsoft C#.NET

  1. Trong phòng thu trực quan.NET, tạo ra một mới Visual C# Console Dự án ứng dụng.
  2. Dán đoạn mã sau vào tập tin lớp học có chứa chức năng chính.

    Xác minh rằng mã thay thế tất cả các hiện có Mã trong tập tin:
    using System;using System.Diagnostics;using System.IO;using System.Resources;using Microsoft.Win32;using System.Security.Cryptography;class InstMSDE{	static void Main(string[] args)	{		try		{   						// Generate random password.			RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();			byte[] encodedSeed = new byte[512];			rng.GetBytes(encodedSeed);			SHA1 sha1 = SHA1.Create();			byte[] hashval = sha1.ComputeHash(encodedSeed);			String base64HashVal = Convert.ToBase64String(hashval);			// Trim "=" off the end.			base64HashVal = base64HashVal.TrimEnd('=');							string msdeINI = "setup.ini";			// You have to set startInfo parameters values as appropriate for your installation.			ProcessStartInfo startInfo = new ProcessStartInfo();			// Setup.exe for MSDE sp3.			startInfo.FileName = "setup.exe"; 			// Pass the SA password to the setup program.			startInfo.Arguments = "/settings \"" + msdeINI + "\"" + " SAPWD=" + base64HashVal + " /qr+ "; 			startInfo.WindowStyle = ProcessWindowStyle.Normal;			// Substitute the workdir with complete path of installation folder. 			startInfo.WorkingDirectory = "c:\\Workingdir";							Process.Start(startInfo);								}		catch (Exception e)		{			Console.WriteLine("Unable to execute program due to the following error: " + e.Message);			return;		}  	}}
  3. Nhấn F5 để biên dịch, và sau đó chạy chương trình.
THAM KHẢO
Để biết thêm về cách nhúng MSDE trong một tuỳ chỉnh thiết lập ứng dụng, ghé thăm Web site sau của Microsoft:

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 814463 - Xem lại Lần cuối: 08/28/2011 06:38:00 - Bản sửa đổi: 2.0

  • kbsetup kbsecurity kblogin kbauthentication kbsample kbguidelines kbcode kbinfo kbmt KB814463 KbMtvi
Phản hồi