走り書き

ちょこっとしたメモを残してく。 

Garoonのスケジュールをpowershellから登録してみる

$headers = @{
    "Content-Type" = "application/json"
    "X-Cybozu-Authorization" = "id:passbase64エンコードしてね"
}
$body = @{
    "subject" = "忘年会"
    "eventType" = "REGULAR"
    "notes" = "すっぽん、すっぽん鍋"
    "start" = @{
        "dateTime" = "2022-12-14T13:00:00+18:00"
        "timeZone" = "Asia/Tokyo"
    }
    "end" = @{
        "dateTime" = "2022-12-14T14:00:00+20:00"
        "timeZone" = "Asia/Tokyo"
    }
    "attendees" = @(
        @{
            "code" = "あなたのアカウント"
            "type" = "USER"
        }
    )
}

# ボディをバイト配列に変換

$json_body = $body | ConvertTo-Json -Depth 10 -Compress
$json_body = [Text.Encoding]::UTF8.GetBytes($json_body)

 

$response = Invoke-RestMethod -Method Post -Headers $headers -Body $json_body -Uri "https://<<ご契約のサブドメイン>>.cybozu.com/g/api/v1/schedule/events" -Proxy "http://プロキシサーバ経由ならサーバ名、なければこのオプション削除:8080"

 

# 応答を表示
$response

 

師走。帰宅途中に出くわす人々は、浮かれに浮かれまくる師走。

いかがお過ごしでしょうか。

そんなのは置いておいて、powershellからGaroonのapiを叩いてみました。

Webのインターフェースか、.netの何かからがよさそうですね。

 

# 引用 ##################

・Garoon REST API 予定を登録する
https://qiita.com/ushiron/items/15be439fb947666fabfe

・Garoon REST API / スケジュール / 予定を登録する
https://cybozu.dev/ja/garoon/docs/rest-api/schedule/add-schedule-event/

cURLでGaroon REST APIを叩く
https://qiita.com/ushiron/items/15be439fb947666fabfe

saml下でcurlの認証どうするの
https://cybozu.dev/ja/kintone/docs/rest-api/overview/authentication/#saml-authentication

POSTデータに日本語が含まれている場合に文字化けするのを解消する
https://feeld-uni.com/?p=2554

Exchange Online PowerShell モジュールに証明書で接続する

タイトルのようなことはしないで、手動でガンバル場合はこちら

Windows PowerShell での Exchange Online への接続について | NTT Com お客さまサポート

これがよくまとまってた。ほぼ自動接続、実行っと。

【Exchange Online】Exchange Online PowerShell V2モジュールに証明書で接続する

 

認証をバイバスしてるようなので、通常のログオンとは違う。hengeとか、他のidpが入るとどうなるのか。よく分からないけどこれはこれで通るのかな。

 

1)自己証明書の作成(接続してコマンド打つPCでどうぞ…)

$newCert = New-SelfSignedCertificate -Subject "CN=おなまえ考えて" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature
Export-Certificate -Cert $newCert -FilePath .\お名前考えて.cer

# これだと期限がデフォルト1年だったかと。検索したら伸ばすオプションも乗ってたはず。また、これだと実行したPCの証明書に収容されてると。インポートも出来るというか、ファイルとして書き出す方法は、エクスポートのみなのか。調べないとよくわからない。

 

2)Microsoft Entra 管理センターでの操作

https://entra.microsoft.com/
1.左メニューでアプリケーション>アプリの登録を選び、開いたウインドウ上の「新規登録」をクリック
2.名前を入れて登録。

3.登録が完了すると、アプリのプロパティが開きます
4.左メニューから「証明書とシークレット」を選んで、「証明書」タブをクリック
5.「証明書のアップロード」を選んで、先ほど作成した証明書(拡張子.cer)をアップロード

6.左メニューから「APIのアクセス許可」を選んで開き、ウインドウ上の「アクセス許可の追加」をクリック
7.「所属する組織で使用している API」タブを選んで、検索窓に「office 365 Ex」と入れ
「Office 365 Exchange Online」を選び、「アプリケーションの許可」を選びます
8.選ぶと、その他のアクセス許可が出てくるので、Exchange>Exchange.ManageAsAppを選で「アクセス許可の追加」をクリック
9.「構成されたアクセス許可」のリストにある「XXXXXXに管理者の同意を与えます」をクリック
10.「はい」を選んで、Exchange.ManageAsAppの状態に緑☑が付いたことを確認
11.User.Readは不要なので、「…」から管理者の同意を取り消すを選びます

 

3)Azure AD portalでの操作

1. Azure AD portalhttps://portal.azure.com/)に移動

2.上部 [検索]に「ロールと管理者」と入力
3.[サービス] セクションの結果から [Microsoft Entra IDのロールと管理者] を選ぶ
4.すべてのロールが開き、管理者ロールの一覧が出るので、「Exchangeの管理者」をクリックして開く
5.上部に「割り当ての追加」があるのでクリック
6.アプリケーションの名前「お名前考えて」を検索して選び、追加をクリック
※ユーザーとアプリが同一に並ぶので、初見は判断に迷う

 

4)Azure AD portalでの操作

1.左上の「Microsoft Azure」をクリックするか、「https://portal.azure.com/」を開く
2.Azure Active Directory 管理センターに戻り、アプリの登録>登録したアプリをクリック
3.アプリケーションIDの値をメモ帳とかにコピー
4.登録したアプリを開き、左メニューから「証明書とシークレット」を選ぶ。
5.証明書の一覧にある登録した拇印のIDをコピー
6.上部にあるホームを選び、AADの管理からビューを選びます。
左上の「Microsoft Azure」をクリックするか、「https://portal.azure.com/」を開く
7.概要にあるプライマリドメインをコピー(テナントのURLだね)

 

5)コマンドの実行

コピーした値を元に下記powershellを実行

 

#ps1
$AppId = "アプリケーションID"
$CertThumbprint ="証明書の拇印ID"
$Domain = "テナントのURL"
Connect-ExchangeOnline -AppId $AppId -CertificateThumbprint $CertThumbprint -Organization $Domain

 

#★eolの何かのコマンド
Get-DistributionGroup

 

# end
Disconnect-ExchangeOnline -Confirm:$false

 

おしまい。

お疲れさまでした。おしまいです。

 

廃止は、設定して逆を進めばよろしいのと、証明書の再発行は、コマンドで発行して、管理画面で入れ替えて、値を得て実行すると。証明書の期限を10年にするなら「-NotAfter (Get-Date).AddYears(10) 」を付けると+10年とのこと。

 

これをベースに別なコマンドを実行してもよいね。

 

とは言え、いろいろやり始めるといろいろできそうだけど、監視は、監視のプラットフォームで値監視でもよさそう。zabbix6あたりで、登録ユーザー数をカウントしたり、挙動の確認をしたりしてもよさそうだけど、ツール提供ベンダーさんもいるので、そこまでするならサブスクするのだろうな。いや、M365もルーティング失敗して止まるので、自社リソースに何かするにしても正常性確認に値を取りに行ってもよいかも(グロスで面倒見てるところも判断できないというか、サービスステータスでズバリの判断が出来る構造でもないし)。

 

で、今後試したいのは

  • linux上でできるのか
  • zabbix6での監視する前に接続できるのか
  • 自己証明書の操作

それるけど

  • powershellから添付ファイル付きメール
  • SharePointへアップロード
  • M365リソース監視など
  • でも一つ出来るといろいろ欲望が…

 

 

Zabbix6にてteams通知

お疲れ様です。こんにちは。

お題のZabbix6でteamsへ通知は出来ました。

こちらの記事の通り進めるのですが、更新がうまく行かずに、テストでできてても、通知がされないことがあったりして、数日無駄に。ハンドリングが弱いのかね。

devlog.arksystems.co.jp

で、細かいところで言えば

プロキシ環境下の場合

メディアタイプのパラメーターに「HTTPProxy」と追加して、proxyの値を設定。

通知した内容のURL

teamsの運用状況にもよるのだろうけど、スマホなどから参照だと、社内とか閉塞網につながらないとか当然あるのでしょうから、CloudFlare Accessでお外公開をしてもよいかもね。

パラメーター「zabbix_url」の「{$ZABBIX.URL}」

管理>マクロから「{$ZABBIX.URL}」を追加して、設定したほうがめんどくさくない。

M365のメール設定

teams設定よりめんどくさそう。なので、触ってないです。

トリガーアクション

お手軽なところだと、PCにエージェントを入れ、「Disk space is low」当たりを通知する設定を施し「fsutil file createnew testfile10g 10737418240」でファイル作って通知とかでもよいか。その前に、pingでもステータス200とかでも監視をしてもらってもよいかもね。

 

では、ばいばい!

 

 

CloudFlare AccessでRDPを使う

CloudFlare Accessは、めんどくさい。それと、競合としてDesktopVPNがあるけど、httpsに絞られてて勢いよくプロキシを抜けていく。なので、お金で済むならDesctopVPNシン・テレワークシステムでよいし、大半は事足りる。

なのですが、なぜCloudFlare Accessでするのかと言えば、面倒だけど、安いし、台数増やせる。webのトンネルは、メインフレームオフコン直結ediとかWebedi、idpが挟められないスクラッチオンプレシステムでもセキュアなトンネルを比較的簡単に組めるので、これはおすすめ。

それらの基礎トレーニングとして、CloudFlare AccessでRDPを組むのが、仕組み知るのにお手軽じゃないのと。でも、最初に成功したのは、Webなのよね...。SMBもできるのだけど、こっちは、接続元のSMBのポートを変更するのが大変なのと、用途としては、もうちょつと広げたスプリットトンネルで構築してもらうのがよろしいのと、RDP(リモートデスクトップ)は、SSHポートフォワーディングのような接続形態でした。

 

1.ドメインの設定

面倒だったので、改めて安いドメインを取得、CloudFlareにお任せしました。
2.こちらのドキュメントをベースに設定
3.Cloudflare Dashboardにログイン
4.Access/Tunnelsに移動して、 「Create a tunnel」をクリック
5.「Name your tunnel」に名前を付けて、右下の「Save tunnel」をクリック
 機能の位置づけとしては、セグメント名かブリッジになるホスト名あたりが無難

6.Hostの設定

これ(https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-windows-amd64.msi)しインストール、その後トークンも仕込む。完了すると、トンネルをCloudflareに接続します。

ブリッジのようにすることも、マシンに単位にすることも可能。24/365稼働のwindowsマシンがあるので、windowsの64版をダウンロードし、クリックしてインストール。

インストール完了後、管理者権限でCMDかターミナルを開いて、次のコマンドをというところをコピー、CMD、ターミナルに貼り付けして実行すると、サービスとして稼働する。完了させて、「Next」で次へ。

アンインストールしたい場合は、再度このコマンドを実行すると。メッセージ内にアンインストールコマンドを表示される。それをコピペして実行すると、アンインストールが可能。
7.「Public Hostnames」を設定します。
「Subdomain」に適当な名称を入れ(接続先URLになります)、またドメインを選択。
Serviceは、ホスト側ブリッジする側になるので、「rdp:l//ocalhost:3389」とすれば
コネクタインストール先のPCにリモートデスクトップとして接続が可。
「rdp://192.168.0.100:3389」とすれば、ブリッジして192.168.0.100へリモートデスクトップしに行く。入力が終わったら「Save tunnel」をクリックして保存。

8.認証の設定

この状態でも接続はできるみたいですが、認証が設定されてないので
Access/Applications」にてApplicationsに進み、「Add an application」をクリック。
9.選択画面から「Self-hosted」を選んで、「Application name」に機能名。
「Application domain」は、Public Hostnamesで設定したSubdomainと、ドメインを選んで、「Next」で次へ。

10.「Policy name」に適当な名前を入力。Configure rulesで、emailsにして特定のメールを入力すると、マジックリンクになるので、「Next」を選んで、次の画面でも
「Save application」を選んで保存。ホスト側はこれで完了なので、接続元のPC設定。

9.接続元の設定

こやつの「2. Connect as a user」からcloudflaredをダウンロード。インストールすると環境変数にパスが登録されるので、次のコマンドをCMDかPowershellの環境かターミナルから実行(書いてて思ったが、zabbixのssh経由で起動してもよさそうね)。
cloudflared access rdp --hostname dojima336.example.com --url rdp://localhost:5589
※hostnameは、「Public Hostnames」にて設定した「Subdomain」とドメイン

    --urlは、転送元の接続先お名前かipとportを指定

    (port:3389にすると頃がいてるPCがwindowsならportが重複してるかも)。
10.コマンドを実行すると黒画面が出続けるので、リモートデスクトップを起動して、上のコマンドだと「localhost:5589」を入力して接続。黒画面はどこか適当なところにウインドウをよけておいて(閉じるとトンネルは終了する)、ブラウザが開いて、マジックリンクの認証画面が表示されます。

指定したメールアドレスを入力して進めると、入力したメールアドレスにパスコードがくるので、手入力すると、リモートデスクトップがつながります。
11.終了

切断は、.終了はリモートデスクトップを切断するのと、黒ウインドウの×をクリックしておしまいです。

 

スプリットでのトンネルやSMB,http(s)のトンネルもできるのが、DesktopVPNを選ばない理由になるのかな。httpに関しては、サイボーズリモートサービスなどと競合しそうだが、それと同等なことが、お手軽にできるのと。MDMや企業の親子関係の関係で、iphoneに証明書が配れないとか、接続ができないケースがあれば、こちらを利用するのも選択の1つとして増えるんじゃないのかしらと。

ただし、CloudFlare AccessがURLフィルターに引っかかったりするので、小さく始めたいところにはお勧めですが、大規模にとなるとオンプレで組んでもよいんじゃないっすか。それが面倒だから、いろいろと探すんだろうけど...。お疲れさまでした。以上です。

 

宿題

なので、httpとスプリットトンネルも確認したいのと、zabbixでいい感じに関ししたいけど、アクセスログどうなんだろうね。そっちのほうがきになったが、未着手なのよね。

Zabbix YAMAHA RTX1200のSNMPの設定をしてみる(2)

(1)の続き。

テンプレートに納得がいかないのと、RTX1200のSNMPはv1でしか出力していないようで、zabbixの汎用テンプレートでは、自動生成ができない。

結論、めんどくさい。それぐらいしか不満はないのだが。でもリリースノートや書籍見てても自動で設定が流れらしいので、設定はお手軽にじゃないのか。と言うことで、他のテンプレートを見たたら「Network Generic Device by SNMP」を発見。

このテンプレートグループが「Templates/Network devices」と言う、「Templates/Modules」じゃないのね。あー全体的に見て行かないと、たどり付けない、無理ゲー仕様。は、分散開発知れてればあるあるなのかしれない。

そんなことはさて置き、ソースコードにも以下の通り書いてある。

概要

特定のベンダーまたはデバイス ファミリ用のテンプレートが見つからない場合は、このテンプレートを使用してください。

これで適用をすると、インターフェースがタケノコのように生え、LOOPBACKが気になるけど、ひとまず全部表示はされたよう。他のルータやAPとほぼほぼ仕様が同じに表示されたので、別な話にシフトできると。

 

Zabbix YAMAHA RTX1200のSNMPの設定をしてみる(1)

DHCPサーバーのプールの状況をZabbixでみたいなと

Windows、IX2000、YAMAHA、Arubaぐらいはみたいなと思って、安いのを探し、RTX1200を購入。

tftpやら設定は、最低限に施して、snmpを有効に。反応がない。snmpの反応がなぜかとみてたら、snmp v1じゃないと吸わないらしい。その後、snmp v1とv2cとコマンドが分かれていて、v2cのコマンドを打ち込んで、v2cで通信できたことを確認。

それとRT12X0のテンプレートは、こちらXMLフォーマットのを6.4に飲ませて、グラフまで表示。ポートステータスは追えてないようなので、らしいのを追加したいのと、ディスカバリルールも設定しておきたい。

いじり始めると、IXでよいじゃん。となるのだが、NECOEMでよく売ってたなと感心はしたけど、触って思って、何かみることもできたので、よい気づきになりまし。

Zabbix Aruba 207(IAP-207-JP)のSNMPの設定をしてみる

少し時間が空きましたが、流れがつかめてないので、魚竿しながら進んでおります。

で、自宅にもZabbix6.4環境を構築したので、自宅の機器登録し始める。

機器はこんな感じ。

  • Windows10
  • nec ix2215
  • Aruba IAP207

PCはエージェントを入れるので、ほぼ自動で一通り吸い出せる。

NEC ix2215は、テンプレートがあり、アイテムの登録をすれば、ほぼ自動で登録が完了。素晴らしい。テンプレートの中身を見ると、下記の3つのモデルが適用されてた。

これであれば、大半のネットワーク機器にも適用できそうねと言うことで、Aruba IAP207にも適用。インターフェースとしてSSIDが表示できるのね。即興でMTRGが出来上がる。

このテンプレートは、いろいろと適用範囲が大きいので、範囲を広げてく。で、これ以外、DHCPのステータスや、SSIDに接続してる端末数とかは、別途用意をしないと行けないので、ここらはまた別のやり方を。