2014年11月18日火曜日

ドメイン コントローラーへの SQL Server のインストール

ドメイン コントローラーへの SQL Server のインストール

セキュリティ上の理由から、ドメイン コントローラーには SQL Server 2014 をインストールしないことをお勧めします。 コンピューターがドメイン コントローラーであっても SQL Server のセットアップ時にインストールが中止されることはありませんが、次の制限事項が適用されます。
  • ローカル サービス アカウントを使用して、ドメイン コントローラー上で SQL Server サービスを実行することはできません。
  • コンピューターに SQL Server をインストールした後で、そのコンピューターをドメイン メンバーからドメイン コントローラーに変更することはできません。 ホスト コンピューターをドメイン コントローラーに変更する前に、SQL Server をアンインストールする必要があります。
  • コンピューターに SQL Server をインストールした後で、そのコンピューターをドメイン コントローラーからドメイン メンバーに変更することはできません。 ホスト コンピューターをドメイン メンバーに変更する前に、SQL Server をアンインストールする必要があります。
  • SQL Server フェールオーバー クラスター インスタンスは、クラスター ノードがドメイン コントローラーの場合はサポートされません。
  • SQL Server セットアップでは、読み取り専用ドメイン コントローラーにセキュリティ グループを作成したり SQL Server サービス アカウントを準備したりすることはできません。 この場合、セットアップは失敗します。
http://msdn.microsoft.com/ja-jp/library/ms144228.aspx

2014年6月12日木曜日

ドメインが削除された後の影響(1)

こんにちは~
今日はドメイン関係の情報を検索しましたので、ブログに投稿しようと思います。

ドメインが削除された時に、クライアントにどんな影響が与えるでしょうか

とりあえずすぐに考えつくものは:
①ドメインユーザーでクライアントにログインできるか
②ドメインのファイルサーバーに元々あるドメインユーザーのアクセス権はどうなるか


ドメインにはクライアントがDCにアクセス出来ない場合でも、ログイン出来る仕組みがあります。クライアントにドメインユーザーでログインする時、たとえDCに通信できない時でも、クライアントにあるログイン情報のキャッシュを使うと、正常にログインできます。
この機能によって、たとえドメインが削除されても、キャッシュうがあればログインは出きってしまいます。
レジストリキーを変更することで、ログインキャッシュをなくすことも、増えることもできます。
キャッシュ ログオン情報は以下のキーでコントロールされます。 
   HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Current Version\Winlogon   
   値の名       : CachedLogonsCount
   データ タイプ: REG_SZ
   値           : 0 - 50
0にする場合いはキャッシュをなしにする、50は上限で、それ以上の数値を入力しても50になりますので、注意する必要があります。
http://support.microsoft.com/default.aspx?scid=kb;ja;172931



windowsのデータアクセス権を識別するために、ユーザーの一意の属性SIDというものを使っています。ドメインがまだ存在する時に、データーのアクセス権の中、ドメインユーザーのアカウント名はちゃんと表示されますが、ドメインが削除すると、そのアカウントが存在しなくなりましたので、「不明なアカウント(SID)」と表示するようになります。
もちろん、クライアント側でドメインユーザー情報を使って、ファイルサーバーにアクセスすることはできなくなってしまいます。

その他になにか気づいたら、また追記でブログを書きます。


今日もどうもあり~


2014年6月3日火曜日

今日はActiveDirectoryのスキーマ拡張について、

こんにちは~

今日は新しいモノを調べてましたので、ここで投稿して、知りたいと人共有しようかなと思って、投稿しました。

ActiveDirectoryのスキーマについて、はなししましょう。

まずActiveDirectoryスキーマとは何でしょうか。

ある記事から、以下の説明を引っ張ってきました

Active Directory では「オブジェクト」単位で情報が格納されています。ユーザや、コンピュータなどがそれぞれ「オブジェクト」として管理されています。

スキーマとは、オブジェクトとオブジェクトに設定される属性はどういうものであるかを定義した雛形のような情報です。たとえば、そのオブジェクトに格納できるデータの種類やデータ構文などを定義しています。

FORM:http://blogs.technet.com/b/jpntsblog/archive/2010/08/18/3350600.aspx


ちょっとわかりにくいかもしれませんので、自分なりに説明します:
ActiveDirectoryのユーザーやコンピューターなどにはプロパティーにいくつ項目があるともいます。例えば住所、電話、など色々あります。この項目やその下の内容全部スキーマだと思って頂いて結構です。スキーマ拡張はこれらの項目追加や変更をするとのことです。

ActiveDirectoryにフォレスト毎に、スキーマの原本(マスタ)を持っているドメインコントローラ(DC)は一つしかありません。このDCは「スキーママスタ」って言います。
スキーマの変更ができるのはスキーママスタしかありません。
(スキーマ変更する権限は:「Schema Admins」グループに所属するユーザーです)

ここから、いくつ朦朧し易いところを書いてみます、自分も調べる前にはっきりとは言えませんでしたので、ここでまとめようと思っています。

◆スキーマの変更範囲は?
→フォレスト全体です、スキーマ拡張すると、変更はフォレスト全体の全てのDCに適用されます。
 ここは自分の理解ですが、言うまでもなく子ドメインや兄弟ドメインも、一つのフォレスト内の全てのドメインに適用されます。

◆スキーマ拡張を元に戻せますか?
→戻れません、属性またクラスは作成後に削除することはできません。もし無効にしたい場合、非アクティブ化はできます。

参考していた情報:
http://msdn.microsoft.com/ja-jp/library/cc759633(v=ws.10).aspx

まだまだ浅いですが、機会があれば、また書こうと思います。

読んでくださった人に、ありがとうございました。



2014年5月27日火曜日

powershell で windowsの証明書のプロパティを取得する方法(テンプレート項目追加)

今日引き続きpowershellで windowsの証明書の情報を引き出すスクリプトを書いています。

前回 の記事でpowershellで証明書を取得する方法を紹介いたしました。
今回は証明書のプロパティも確認や絞り出せるようにご紹介致します。

今日はユーザー証明書のコマンドを例にします
・ローカルユーザーの証明書リストを出すコマンドは
 Get-ChildItem -path Cert:\CurrentUser -Recurse

このコマンドをGet-ChildItem -path Cert:\CurrentUser で打つと、子項目が出力されます

パスに子項目も書いてると、その項目の証明書だけ取得することができます。

で、プロパティの見方は?

$a = get-childitem Cert:\CurrentUser\ca | fl    
これでCAオブジェクト中身の証明書のより詳細な内容が表示されます

で、もっと詳細の情報が見たい場合、MSのTechNetで
get-childitem Cert:\CurrentUser\ca | Format-List -Property *
っていう書き方で見れます。
参考:http://technet.microsoft.com/en-us/library/hh847761.aspx


この詳細なプロパティをみって、あれ?テンプレートの項目がないではないかと疑問が生じ、どうやって見れるのかを調べてみました。
結局テンプレートの表示は拡張で項目を追加しないといけないんで、ファンクションを書く必要があります。幸いに、英語の記事でもう書いてくれた人がいまして、それをそのまま持ってきて使ってみました。
スクリプトファンクション内容:
function Transform-Certificate {
[CmdletBinding()]
    param(
 [Parameter(Mandatory = $true, ValueFromPipeline = $true, ValueFromPipelineByPropertyName = $true)]
 [Security.Cryptography.X509Certificates.X509Certificate2]$cert
 )
    process {
        $temp = $cert.Extensions | ?{$_.Oid.Value -eq "1.3.6.1.4.1.311.20.2"}
 if (!$temp) {
            $temp = $cert.Extensions | ?{$_.Oid.Value -eq "1.3.6.1.4.1.311.21.7"}
 }
        $cert | Add-Member -Name Template -MemberType NoteProperty -Value $temp.Format(1) -PassThru
 }
}

で、使うときは以下になります:
get-childitem cert:\CurrentUser\my | Transform-Certificate |fl *

参考はここ:http://social.technet.microsoft.com/Forums/windowsazure/en-US/187698d0-5602-4301-9d0c-85e89d948ea2/user-powershell-to-get-the-template-used-to-create-a-certificate

ファンクションの中身をちらと見て、証明書タイプのオブジェクトにTempalateのプロパティ項目を追加するように書いていますが、細かく理解するには引数の意味を調べないと多分難しいと思います。これは深い!深いです! まぁ調べればわかると思います。

このファンクションを使ってみると、flで出力すると、テンプレート属性を持ってない証明書にはエラーが出ます
が、テンプレート属性の持つ証明書プロパティは正常に出力されました。

ま、スクリプトをちょっと弄ってればエラーを出ないようにできる思いますので、大丈夫と思います。

また次回に何を書こうかをまだわからないのですが、なにかわかったら書こうと思います。

ブログを書くのはまだ二回目ですが、読んでいただいた皆さんに感謝!



2014年5月21日水曜日

powershell で windowsの証明書リストを取得する方法

今日はスクリプトでどうやってwindowsの証明書リストを取得できるのかを調べてみました。
◆まず、普通にGUIで証明書リストをエクスポートする方法をご紹介いたします
・「プログラムとファイルの検索」にmmcを入力してEnterキーを押すとmmcが立ち上がります
・左上の「ファイル」をクリックして、「スナップインの追加と削除を選択」します
・リストの中から証明証を追加します(ここはいくつの種類があるので、要望に応じて選択してください)
・エクスポートしたい証明書フォルダを選択し、右クリックすると「一覧のエクスポート」があるので、それをクリックすると、パスとかファイル名とかを指定すればできます。

で、ここでエクスポートしたリストはmmcで見た形式とはほぼ変わりません

◆これから スクリプト(powershell)でエクスポートする方法をご紹介致します
 powershellにて、以下のコマンドを打てばいいです

・ローカルコンピューターの証明書リストを出すコマンドは
 Get-ChildItem -Path cert:\LocalMachine -Recurse

・ローカルユーザーの証明書リストを出すコマンドは

 Get-ChildItem -path Cert:\CurrentUser -Recurse

もちろんこれで出力にはならないので、CSVファイル形式で出力する場合は以下の例のようにすればいいです
例:Get-ChildItem -Path cert:\LocalMachine -Recurse Export-Csv c:\tmp\cert.csv 
赤い部分が出力の例です、パスは適当に書いています。
参考リンク:
http://technet.microsoft.com/en-us/library/hh848632.aspx