System.Security.SecurityException khi ghi vào Nhật ký sự kiện


189

Tôi đang cố gắng chuyển một ứng dụng ASP.NET từ Server 2003 (và IIS6) sang Server 2008 (IIS7).

Khi tôi thử và truy cập trang trên trình duyệt, tôi nhận được điều này:

lỗi server trong ứng dụng '/'

Ngoại lệ an ninh

Mô tả: Ứng dụng đã cố thực hiện một thao tác không được chính sách bảo mật cho phép. Để cấp cho ứng dụng này quyền yêu cầu, vui lòng liên hệ với quản trị viên hệ thống của bạn hoặc thay đổi mức độ tin cậy của ứng dụng trong tệp cấu hình.

Chi tiết ngoại lệ: System.Security.SecurityException: Không tìm thấy nguồn, nhưng một số hoặc tất cả các nhật ký sự kiện không thể được tìm kiếm. Nhật ký không thể truy cập: Bảo mật

Lỗi nguồn:

Một ngoại lệ chưa được xử lý đã được tạo trong quá trình thực hiện yêu cầu web hiện tại. Thông tin liên quan đến nguồn gốc và vị trí của ngoại lệ có thể được xác định bằng cách sử dụng dấu vết ngăn xếp ngoại lệ bên dưới.

Dấu vết ngăn xếp:

[SecurityException: Không tìm thấy nguồn, nhưng một số hoặc tất cả các bản ghi sự kiện không thể được tìm kiếm. Nhật ký không thể truy cập: Bảo mật.]

System.Diagnostics.EventLog.FindSourceRegistration (Chuỗi nguồn, String machineName, Boolean readOnly) +562 System.Diagnostics.EventLog.SourceExists (Chuỗi nguồn, String machineName) +251

[bắn tỉa]

Đây là những điều tôi đã làm để thử và giải quyết nó:

  1. Cung cấp cho tất cả mọi người quyền truy cập đầy đủ quyền vào khóa HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Security. Điều này đã làm việc. Nhưng tự nhiên tôi không thể làm điều này trong sản xuất. Vì vậy, tôi đã xóa quyền của mọi người trên mạng sau khi chạy ứng dụng trong vài phút và lỗi lại xuất hiện.

  2. Tôi đã tạo nguồn trong Nhật ký ứng dụng và Nhật ký bảo mật (và tôi đã xác minh nó tồn tại qua regedit) trong khi cài đặt với quyền nâng cao nhưng vẫn còn lỗi.

  3. Tôi đã cung cấp cho ứng dụng một mức độ tin cậy đầy đủ trong web.configtệp (và sử dụng appcmd.exe) nhưng không có kết quả.

Có ai có cái nhìn sâu sắc về những gì có thể được thực hiện ở đây?

PS: Đây là phần tiếp theo cho câu hỏi này . Tôi đã làm theo các câu trả lời đã cho nhưng vô ích (xem # 2 ở trên).


Tôi đã nhận được điều này khi cố gắng ghi vào nguồn tùy chỉnh trong dịch vụ .Net đang chạy dưới dạng NetworkService. Tôi vừa thay đổi nguồn nhật ký sự kiện để khớp với tên dịch vụ được thiết lập thông qua gói .Net Service Setup và nó hoạt động mà không cần thiết lập quyền đăng ký. Tôi nhận thấy nó bằng cách xem tên dịch vụ là một khóa đã có trong HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlSet \ Services \ EventLog \ Application
Jon Adams


2
Một câu trả lời khác có thể: Nhấp chuột phải vào exe và chọn "Chạy với tư cách quản trị viên"
MacGyver

Câu trả lời:


169

Để cấp Network Servicequyền đọc trên EventLog/Securitykhóa (theo đề xuất của Firenzi và royrules22), hãy làm theo hướng dẫn từ http://geekswithbloss.net/timh/archive/2005/10/05/56029.aspx

  1. Mở Trình chỉnh sửa sổ đăng ký:
    1. Chọn Startsau đóRun
    2. Nhập regedt32hoặcregedit
  2. Điều hướng / mở rộng tới khóa sau:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security

  3. Nhấp chuột phải vào mục này và chọn Quyền

  4. Thêm Network Servicengười dùng

  5. Cho phép đọc

CẬP NHẬT: Các bước trên đều ổn trên các máy của nhà phát triển, nơi bạn không sử dụng quy trình triển khai để cài đặt ứng dụng.
Tuy nhiên, nếu bạn triển khai ứng dụng của bạn vào máy khác (s), hãy xem xét để đăng ký nguồn ghi sự kiện trong khi cài đặt như đề xuất trong SailAvid củaNicole Calinoiu của câu trả lời.

Tôi đang sử dụng chức năng PowerShell (gọi trong Octopus Deploy.ps1)

function Create-EventSources() {
    $eventSources = @("MySource1","MySource2" )
    foreach ($source in $eventSources) {
            if ([System.Diagnostics.EventLog]::SourceExists($source) -eq $false) {
                [System.Diagnostics.EventLog]::CreateEventSource($source, "Application")
            }
    }
}

Trong IIS7, bạn có thể chỉ định "DỊCH VỤ MẠNG" làm danh tính cho Nhóm ứng dụng (bạn có thể thấy ApplicationPoolIdentity là mặc định) hoặc thay vào đó bạn có thể tạo người dùng mới cho mỗi Nhóm ứng dụng và đặt quyền cho "Tài khoản tùy chỉnh" đó. xem Chỉ định danh tính cho nhóm ứng dụng (IIS 7)
Grokodile

5
Các thay đổi chỉ có hiệu lực sau khi bạn khởi động lại ứng dụng của mình trên IIS
Zé Carlos

7
Tôi đã cho phép IIS_IUSRS đọc / ghi khóa eventlog và đọc khóa Bảo mật. Sản phẩm của tôi cần quyền truy cập ghi trên khóa eventlog vì nó tạo nguồn sự kiện riêng.
vịt9

1
duck9 tôi sửa cho IIS8, xem tại đây để biết thêm chi tiết: stackoverflow.com/questions/712203/iêu
thedrs

1
Đồng thời xem tại serverfault.com/a/81246/219898 về Người dùng nhóm ứng dụng và các quyền liên quan - để biết giải pháp này. Cảm ơn @Michael Freidgeim - là một trợ giúp lớn.
Anthony Horne

58

Vấn đề là các EventLog.SourceExistscố gắng truy cập EventLog\Securitykhóa, quyền truy cập chỉ được phép cho quản trị viên.

Một ví dụ phổ biến cho chương trình C # đăng nhập EventLoglà:

string sSource;
string sLog;
string sEvent;

sSource = "dotNET Sample App";
sLog = "Application";
sEvent = "Sample Event";

if (!EventLog.SourceExists(sSource))
    EventLog.CreateEventSource(sSource, sLog);

EventLog.WriteEntry(sSource, sEvent);
EventLog.WriteEntry(sSource, sEvent, EventLogEntryType.Warning, 234);

Tuy nhiên, các dòng sau không thành công nếu chương trình không có quyền quản trị viên và khóa không được tìm thấy bên dưới EventLog\ApplicationEventLog.SourceExistssau đó sẽ cố gắng truy cập EventLog\Security.

if (!EventLog.SourceExists(sSource))
    EventLog.CreateEventSource(sSource, sLog);

Do đó, cách được đề xuất là tạo tập lệnh cài đặt, tạo khóa tương ứng, cụ thể là:

HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Services \ EventLog \ Application \ dotNET Ứng dụng mẫu

Người ta có thể loại bỏ hai dòng đó.

Bạn cũng có thể tạo một .regtệp để tạo khoá đăng ký. Chỉ cần lưu văn bản sau vào một tệp create.reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\dotNET Sample App]

1
Đây chính xác là những gì tôi làm cho tất cả các dịch vụ của tôi. Tôi tin rằng đây là điều đúng đắn. Trong mọi dịch vụ nơi tôi sử dụng nhật ký sự kiện, tôi có tệp .reg giống như ở trên. Một lưu ý nhỏ là tệp phải được lưu dưới dạng Unicode-32 (cp 1200.)
Valo

Câu trả lời này mô tả lý do thực sự đằng sau lỗi. Kiểm tra tồn tại cố gắng liệt kê toàn bộ khóa. nếu nó tồn tại, checkExists hoạt động tốt.
DanO 29/07/2015

EventLog \ Security đây là chìa khóa để hoạt động, hãy đảm bảo bạn có quyền về điều đó.
Princa

45

Giải pháp là cấp quyền đọc tài khoản "Dịch vụ mạng" trên khóa EventLog / Security.


1
Tôi thấy các giải pháp tương tự xung quanh. Nhưng tôi chỉ tự hỏi tại sao nó lại như thế này. Bởi vì tôi có thể thấy rằng rất nhiều dịch vụ được đăng nhập dưới dạng NetworkService và chúng phải có khả năng đọc nhật ký / bảo mật sự kiện. Vậy tại sao cần phải thêm quyền cho NetworkService?
h - n

11
Đối với những người trong chúng ta thường không thu thập dữ liệu thông qua sổ đăng ký, liên kết này có thể hữu ích: social.msdn.microsoft.com/forums/en-US/ Kẻ
Allan

Liên kết đẹp Allan. Điểm # 3 bởi câu trả lời được chấp nhận là quan trọng và đã cắn tôi một lần. tức là Cấp quyền tại khóa sổ đăng ký EventLog cha mẹ KHÔNG truyền tới "nhật ký không thể truy cập" như Bảo mật và Máy chủ ảo, mặc dù chúng là khóa con trong sổ đăng ký. Nếu bạn muốn truy cập nhật ký sự kiện đầy đủ, bạn phải cấp quyền ở CẢ HAI mức nhật ký sự kiện cha mẹ và cấp độ Bảo mật con.
Ben Barreth

1
Các thay đổi chỉ có hiệu lực sau khi bạn khởi động lại ứng dụng của mình trên IIS
Zé Carlos

Đối với những người đã cố gắng Sao chép / Dán, hãy đảm bảo có khoảng trắng giữa các từ "Dịch vụ mạng".
Chris Fremgen

7

Đối với tôi, việc cấp quyền 'Đọc' cho 'NetworkService' cho toàn bộ chi nhánh 'EventLog' đã hoạt động.


điều đó không liên quan lắm, vì các khóa phụ như "Bảo mật" hoặc "Máy chủ ảo" cần cấp quyền truy cập đọc riêng lẻ, vì các quyền đã được đặt thành không kế thừa từ khóa cha.
Serge

7

Tôi gặp vấn đề rất giống với chương trình giao diện điều khiển tôi phát triển theo VS2010 (được nâng cấp từ VS2008 dưới XP) Prog của tôi sử dụng EnLib để thực hiện đăng nhập. Lỗi đã bị sa thải vì EntLib không được phép đăng ký nguồn sự kiện mới.

Vì vậy, tôi đã bắt đầu một khi prog được biên dịch của tôi với tư cách Quản trị viên : nó đã đăng ký nguồn sự kiện. Sau đó, tôi đã quay lại phát triển và gỡ lỗi từ bên trong VS mà không gặp vấn đề gì.

(bạn cũng có thể tham khảo http://www.blackwasp.co.uk/EventLog_3.aspx , nó đã giúp tôi


7

Ngoại lệ này xảy ra với tôi từ một ứng dụng bảng điều khiển .NET đang chạy như một tác vụ theo lịch trình và tôi đã cố gắng thực hiện điều tương tự - tạo một Nguồn sự kiện mới và ghi vào nhật ký sự kiện.

Cuối cùng, việc thiết lập quyền đầy đủ cho người dùng mà tác vụ đang chạy trên các phím sau đã thực hiện thủ thuật cho tôi:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Security
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog

3
Bạn đã cứu ngày của tôi. BTW, cho phép đọc là đủ trên eventlog\Applicationeventlog\Security; kiểm soát đầy đủ chỉ cần trên eventlogroot.
Ruud Helderman

6

Tôi cố gắng gần như mọi thứ ở đây để giải quyết vấn đề này ... Tôi chia sẻ ở đây câu trả lời giúp tôi:

Một cách khác để giải quyết vấn đề:

  • trong bảng điều khiển IIS, đi đến nhóm ứng dụng quản lý trang web của bạn và lưu ý danh tính đang chạy nó (thường là Dịch vụ mạng)
  • đảm bảo rằng danh tính này có thể đọc KEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Services \ Eventlog (nhấp chuột, ủy quyền)
  • bây giờ thay đổi danh tính của nhóm ứng dụng này thành Hệ thống cục bộ, áp dụng và quay lại Dịch vụ mạng

Thông tin đăng nhập sẽ được tải lại và có thể truy cập EventLog

trong http://geekswithbloss.net/timh/archive/2005/10/05/56029.aspx , cảm ơn Michael Freidgeim


Thay đổi nhóm ứng dụng từ "ApplicationPoolIdentity" thành "LocalSystem" đã giải quyết vấn đề tạo / đọc nhật ký sự kiện cho tôi.
majestzim

4

Tôi gặp vấn đề tương tự, nhưng tôi phải lên một cấp và cấp quyền truy cập đầy đủ cho mọi người vào khóa HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ Services \ EventLog \, thay vì đi xuống bảo mật, điều đó đã giải quyết vấn đề cho tôi.


1
Ngoài ra, hãy thử thiết lập ứng dụng để chạy như LocalSystem, vì vậy khóa đăng ký được tạo, sau đó bạn có thể thay đổi trở lại NetworkService sau đó.
demcodemonkey

4

Vấn đề tương tự trên Windows 7 64 bit. Chạy như quản trị viên giải quyết vấn đề.


4

Một khóa mới với tên nguồn được sử dụng cần phải được tạo trong HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ services \ eventlog \ Application trong regEdit khi bạn sử dụng System.Diagnostics.EventLog.WriteEntry ("SourceName", "ErrorMessage", EventLogEntry)

Vì vậy, về cơ bản người dùng của bạn không có quyền tạo khóa. Việc này có thể thực hiện như sau tùy thuộc vào người dùng mà bạn đang sử dụng từ giá trị Danh tính trong cài đặt Nâng cao của Nhóm ứng dụng:

  1. Chạy RegEdit và truy cập HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ services \ eventlog
  2. Nhấp chuột phải vào phím EventLog và tùy chọn quyền ... tùy chọn 3.Thêm người dùng của bạn với quyền truy cập Kiểm soát đầy đủ.

    -Nếu bạn đang sử dụng "NetworkService" thêm người dùng DỊCH VỤ MẠNG

    -Nếu bạn đang sử dụng "ApplicationPoolIdentity" thêm IIS APPPOL {tên nhóm ứng dụng của bạn} (sử dụng vị trí máy cục bộ khi tìm kiếm người dùng).

    -Nếu bạn đang sử dụng "LocalSystem", hãy đảm bảo rằng người dùng có quyền Quản trị viên. Nó không được khuyến nghị cho các lỗ hổng.

  3. Lặp lại các bước từ 1 đến 3 cho HKEY_LOCAL_MACHINE \ HỆ THỐNG \ CurrentControlset \ services \ eventlog \ Security

Để gỡ lỗi với Visual Studio, tôi sử dụng "NetworkService" (đó là người dùng ASP.NET) và khi trang web được xuất bản, tôi đã sử dụng "AppicationPoolIdentity".


3

FYI ... vấn đề của tôi là đã vô tình chọn "Dịch vụ cục bộ" làm Tài khoản trên các thuộc tính của ProcessInstaller thay vì "Hệ thống cục bộ". Chỉ cần đề cập cho bất kỳ ai khác theo dõi hướng dẫn MSDN khi lựa chọn Dịch vụ địa phương hiển thị đầu tiên và tôi đã không chú ý ....


3

Dường như có một giải pháp rõ ràng rõ ràng cho vấn đề này mà tôi chưa thấy một nhược điểm lớn, ít nhất là không thực tế để có được quyền quản trị để tạo nguồn sự kiện của riêng bạn: Sử dụng một nguồn đã có ở đó.

Hai cái mà tôi đã bắt đầu sử dụng là ".Net Runtime" và "Lỗi ứng dụng", cả hai đều có vẻ như chúng sẽ có mặt trên hầu hết các máy.

Nhược điểm chính là không thể nhóm theo sự kiện đó và có thể bạn không có ID sự kiện được liên kết, điều đó có nghĩa là mục nhật ký rất có thể được thêm tiền tố vào hiệu ứng của "Mô tả cho ID sự kiện 0 từ nguồn .Net Thời gian chạy không thể được tìm thấy .... "nếu bạn bỏ qua nó, nhưng nhật ký đi vào và đầu ra trông có vẻ hợp lý.

Mã kết quả cuối cùng trông giống như:

EventLog.WriteEntry(
    ".Net Runtime", 
    "Some message text here, maybe an exception you want to log",
    EventLogEntryType.Error
    );

Tất nhiên, vì luôn có cơ hội bạn ở trên một máy không có các nguồn sự kiện đó vì bất kỳ lý do gì, bạn có thể muốn try {} catch{}bọc nó trong trường hợp nó bị lỗi và làm cho mọi thứ tồi tệ hơn, nhưng các sự kiện hiện đã có thể hiểu được.


2

Tôi không làm việc trên IIS, nhưng tôi có một ứng dụng gây ra lỗi tương tự trên hộp 2K8. Nó hoạt động tốt trên hộp 2K3, đi hình.

Nghị quyết của tôi là "Chạy với tư cách quản trị viên" để cung cấp cho ứng dụng quyền nâng cao và mọi thứ hoạt động vui vẻ. Tôi hy vọng điều này sẽ giúp bạn đi đúng hướng.

Windows 2008 là quyền / quyền / độ cao thực sự khác với Windows 2003, gar.


2

Xin chào. Tôi gặp vấn đề tương tự khi tôi đang phát triển một ứng dụng và muốn cài đặt nó trên PC từ xa, tôi đã sửa nó bằng cách làm như sau:

1) Xem sổ đăng ký của bạn, xác định vị trí: HKLM \ System \ CurrentControlset \ Services \ EventLog \ Application (??? YOU_SERVICE_OR_APP_NAME ???)

Lưu ý rằng "(??? YOU_SERVICE_OR_APP_NAME ???)" là tên dịch vụ ứng dụng của bạn như bạn đã xác định khi bạn tạo triển khai .NET của mình, ví dụ: nếu bạn đặt tên cho ứng dụng mới của mình là "Ứng dụng mới của tôi" thì khóa sẽ là: HKLM \ System \ CurrentControlset \ Services \ EventLog \ Application \ Ứng dụng mới của tôi

Lưu ý2: Tùy thuộc vào sự kiện nào bạn đang ghi vào, bạn có thể tìm thấy trên hộp DEV của mình, \ Application \ (như đã lưu ý ở trên), hoặc (\ System) hoặc (\ Security) tùy thuộc vào sự kiện mà ứng dụng của bạn viết vào , (\ Application) sẽ ổn mọi lúc.

2) Đang ở trên phím, Từ menu; Chọn "TẬP_TIN" -> "Xuất", rồi lưu tệp. (Lưu ý: Điều này sẽ tạo các cài đặt đăng ký cần thiết của bạn khi ứng dụng cần truy cập khóa này để ghi vào Trình xem sự kiện), tệp mới sẽ là tệp .REG, vì lý do, hãy gọi nó là "Ứng dụng mới của tôi.REG "

3) Khi triển khai trên SẢN XUẤT, hãy tham khảo quản trị viên của Hệ thống Máy chủ (SA), bàn giao tệp "Ứng dụng mới của tôi.REG" cùng với ứng dụng và yêu cầu SA cài đặt tệp REG này, sau khi hoàn tất (với tư cách là quản trị viên) tạo chìa khóa cho applicaion của bạn.

4) Chạy ứng dụng của bạn, nó không cần phải truy cập bất cứ thứ gì khác ngoài khóa này.

Vấn đề nên được giải quyết ngay bây giờ.

Nguyên nhân:

Khi phát triển một ứng dụng ghi bất cứ điều gì vào EventLog, nó sẽ yêu cầu KEY cho nó trong sổ đăng ký Eventlog nếu không tìm thấy khóa này, nó sẽ cố gắng tạo nó, nhưng sau đó không có quyền để làm như vậy. Quá trình trên, tương tự như việc triển khai một ứng dụng (thủ công) trong khi chúng tôi tự tạo ra ứng dụng này và không cần phải đau đầu vì bạn không điều chỉnh sổ đăng ký bằng cách thêm quyền vào MỌI NGƯỜI, đó là một rủi ro an toàn trên các máy chủ sản xuất.

Tôi hy vọng điều này sẽ giúp giải quyết nó.


2

Mặc dù câu trả lời của trình cài đặt là một câu trả lời hay, nhưng không phải lúc nào cũng thực tế khi xử lý phần mềm bạn không viết. Một câu trả lời đơn giản là tạo nhật ký và nguồn sự kiện bằng lệnh PowerShell New-EventLog ( http://technet.microsoft.com/en-us/l )

Chạy PowerShell với tư cách Quản trị viên và chạy lệnh sau thay đổi tên và nguồn nhật ký mà bạn cần.

New-EventLog -LogName Ứng dụng -Source TFSAggregator

Tôi đã sử dụng nó để giải quyết Ngoại lệ Nhật ký Sự kiện khi Bộ tổng hợp chạy sự cố từ codeplex.


1

Có một vấn đề tương tự với tất cả các máy chủ năm 2008 của chúng tôi. Nhật ký bảo mật đã ngừng hoạt động hoàn toàn vì GPO đã lấy nhóm Người dùng được xác thực và đọc quyền từ khóaHKLM\System\CurrentControlSet\Services\EventLog\security

Đặt lại điều này theo khuyến nghị của Microsoft đã khắc phục vấn đề. Tôi nghi ngờ việc cung cấp cho tất cả người dùng được xác thực đọc ở cấp cao hơn cũng sẽ khắc phục vấn đề của bạn.


1

Tôi gặp vấn đề tương tự - trong trường hợp của tôi Nguồn chứa <, các >ký tự. Tôi nói rằng các máy 64 bit đang sử dụng cơ sở log - xml mới và các ký tự này (được đặt từ chuỗi) tạo xml không hợp lệ gây ra ngoại lệ. Có thể xem xét vấn đề này của Microsoft - không xử lý đúng Nguồn (tên / chuỗi).


1

Giải pháp rất đơn giản - Chạy ứng dụng Visual Studio ở chế độ Quản trị viên!


Khi khắc phục sự cố trong VS và gặp lỗi này, điều này đã khắc phục nó cho tôi
wruckie

Điều này sẽ xảy ra lỗi vì không phải VS đang thực hiện cuộc gọi này, đây là ứng dụng có khả năng chạy trong bối cảnh bảo mật khác.
CodeMonkey1313

0

Ứng dụng của tôi được cài đặt trên các máy chủ web của khách hàng. Thay vì loay hoay với các quyền của Dịch vụ mạng và sổ đăng ký, tôi đã chọn kiểm tra SourceExistsvà chạy CreateEventSourcetrong trình cài đặt của mình.

Tôi cũng đã thêm một lần thử / bắt xung quanh log.source = "xx"trong ứng dụng để đặt nó thành một nguồn đã biết nếu nguồn sự kiện của tôi không được tạo (Điều này sẽ chỉ xuất hiện nếu tôi đổi chỗ nóng thay vì cài đặt lại).


0

thử bên dưới trong web.config

 <system.web>

<trust level="Full"/>

</system.web>

-1

Tôi gặp vấn đề này khi chạy một ứng dụng trong VS. Tất cả những gì tôi phải làm là chạy chương trình với tư cách Quản trị viên một lần, sau đó tôi có thể chạy từ bên trong VS.

Để chạy với tư cách Quản trị viên, chỉ cần điều hướng đến thư mục gỡ lỗi của bạn trong windows explorer. Nhấp chuột phải vào chương trình và chọn Chạy với tư cách quản trị viên.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.