カテゴリー: IT Page 1 of 5

情報セキュリティマネジメント試験(SG) がはじまります

blog_img_4185

こんにちは。

IPA(情報処理推進機構)の情報処理技術者試験に新しい試験区分が追加されましたね。
その名も、、、

情報セキュリティマネジメント試験(SG)
[ Information Security Management Examination ]

じゃじゃーん、、すごく難しそうな試験名(笑)

対象者像は以下のとおりです。

情報システムの利用部門にあって、情報セキュリティリーダとして、部門の業務遂行に必要な情報セキュリティ対策や組織が定めた情報セキュリティ諸規程(情報セキュリティポリシを含む組織内諸規程)の目的・内容を適切に理解し、情報及び情報システムを安全に活用するために、情報セキュリティが確保された状況を実現し、維持・改善する者

 

  • 春期・秋期実施
  • 試験時間・出題形式・出題数(解答数)

内容みてると

ITパスポート <= 情報セキュリティマネジメント試験 < 基本情報処理

みたいな位置づけですかね。最近はこども向けのプログラミング教室があったり、国も施策として考えているみたいですし、試験区分が増えて、IT業界が盛り上がって行くのはいいことですね。これでブラックなイメージが払しょくされればいいのですが(涙)個人的にはLPIC系の国家資格ができればいいのになぁと思う今日この頃です。
今年も何か受験したいと思います。(これは受けないけど(笑))

■参考
https://www.jitec.ipa.go.jp/1_11seido/sg.html
https://www.jitec.ipa.go.jp/sg/

Vagrantのboxサイズを拡張する

提供されているboxが8GBしかなかったので拡張したのですが、結構大変だったのでメモします。

ディスクの拡張

boxから普通にインスタンスを作成。
インスタンスを作成したらシャットダウンして作業を行います。

VirtualBoxではディスクサイズが可変のタイプは .vdiなのですが、
Vagrantのboxとできるディスクタイプはvmdkとなります。
まずは、現在のvmdkディスクをクローンしてvdi形式のディスクを作成します。

その後、カレントディレクトリを作成した仮想サーバのディスクがある所まで移動して

VBoxManage clonehd "box-disk1.vmdk" "clone-box-disk1.vdi" --format vdi

クローンしたディスクの容量を拡張します。ここでは20GBにしたいと仮定して20480を設定しています。
(20(GB) * 1024(MB) = 20480)

VBoxManage modifyhd clone-box-disk1.vdi --resize 20480

次に、ディスク拡張されたvdiをvmdkにクローンします。

VBoxManage clonehd "clone-box-disk1.vdi" "box-disk2.vmdk" --format vmdk

拡張したディスクを差し替えます。
この作業は、VirtualBoxから行ってもいいかもしれません。
–port 0 –device 0 の部分はbox-disk1.vmdkが入っていたものを指定します。
ちなみに、server_default_1448874918650_80404 は仮想サーバー名です。

VBoxManage storageattach server_default_1448874918650_80404 --storagectl "SATA" --port 0 --device 0 --type hdd --medium box-disk2.vmdk

この設定を行った後、起動してみて無事に起動すればOKです。
確認できたら、またまたシャットダウンします。

パーティション操作

現在ディスクは20GBに拡張しましたが、パーティションは8GBまでしか使用されていない状態です。
パーティションを操作して、8GBを20GBに拡張します。

新たに作成された box-disk2.vmdk を適当な仮想サーバにアタッチします。
アタッチ後、lsblkコマンドでディスクの様態をチェック。

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda    202:65   0   8G  0 disk /
└ sda1 202:145  0   1G  0 part
└─sda2 202:145  0   8G  0 part
sdb    202:144  0  20G  0 disk
└ sdb1 202:145  0   1G  0 [SWAP]
└─sdb2 202:145  0   8G  0 part

今回くっつけたものはsdbとして認識されていました。
partedでパーティション操作を行っていきます。

ない場合は、 yum install parted か apt-get install partedでインストールします。

# parted /dev/sdb
GNU Parted 2.1
/dev/sdb を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。

表記をセクターに変更します。

(parted) unit s

現在の情報を表示します。

(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 41943040s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number  Start     End        Size       Type     File system     Flags
1      2048s     1953791s   1951744s   primary  linux-swap(v1)
2      1953792s  15988735s  15986688s  primary   ext4            boot

この情報はあとで使用するため、メモしておきましょう。
今回は、特にNumber2の行が重要になります。

次に、パーティションを削除します。

(parted) rm 2

パーティションを作成します。

(parted) mkpart
Partition name? []?
File system type? [ext2]? ext4
Start? 1953792s
End? 100%

パーティションサイズ以外は、元のパーティションと同じになるように修正します。

(parted) set 2 boot on
(parted) set 2 LBA off

ここまでできたら、EndとSize以外は元と同じになっているか確認します。

(parted) print
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 41943040s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number  Start     End        Size       Type     File system     Flags
1      2048s     1953791s   1951744s   primary  linux-swap(v1)
2      1953792s  41943039s  39989248s  primary  ext4            boot

終了!

(parted) quit

20GBに拡張されていることを確認します。

# lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda    202:65   0   8G  0 disk /
└ sda1 202:145  0   1G  0 part
└─sda2 202:145  0   8G  0 part
sdb    202:144  0  20G  0 disk
└ sdb1 202:145  0   1G  0 [SWAP]
└─sdb2 202:145  0  19G  0 part

念のため、ディスクチェックをかけましょう。

e2fsck -f /dev/sdb2

ここまでできたら、適当な仮想サーバをシャットダウンしてディスクを外します。

パーティション拡張したディスクで起動

インスタンスを起動します。

resize2fs /dev/sda2

ここで、サイズが20GBに拡張されたら完了です。

box作成

あとはVagrantfileがあるディレクトリでboxを作成して終了です。

vagrant package

Codecademyをやってみた

こんにちは、WEBエンジニアのyuchiです。

最近、WEB上でプログラム学習ができる無料のサイトがたくさん作られていますよね。
そんな多々あるサービスの中で、私は以前「Codecademy」というサービス(もちろん無料)を使って勉強してみました。

○Codecademy
http://www.codecademy.com/

普段、私は主にPHPをさわっているので、今回は違う言語にチャレンジしようと思い、
よく使われている汎用なプログラミング言語「Python(パイソン)」を選択してみました。

すると、下記のような画面が出てきます。

 

 

「Codecademy」は日本語に対応していないようなので、説明は英語で書かれています・・・

 

とりあえず説明を読みながら、黒いエディター部分にプログラムを書いて、「Save & SubmitCode」をクリックしました。

 

書いたコードがOKだったら、右上の部分に結果が表示され、プログラムが実行されます。
このように、1つクリアすると次の章に進んでいき、徐々に基礎的なプログラミングが学べるようになっていました。
誰でも気軽に始められるので、初心者の方もこういったツールをぜひ活用してみてほしいです!

以上、終わります。

wifiやbluetoothってなに?

今やIT業界だけでなく、日常生活でも普通に使われているwifibluetooth
一体これらが何なのか、物理学の博士号を取り損ねた僕が、知っている範囲で説明したいと思います。

wifibluetoothとは電磁波です

これらの正体は、電磁波と呼ばれるものです。
人体に悪影響があるとかないとかよく言われている、あの電磁波です。
ちなみに、太陽や蛍光灯の光も電磁波なのですが、中でも、蛍光灯は白かったり赤かったり青かったり、
様々な色がありますよね。
これは何が違うのか?というと、波長や周波数が違うため、違った色合いで見えるのです。

可視光

一般的に「光」と呼ばれているのは、私たちが見ることのできる
波長が約380nm〜780nm(1nm=0.000000001m)の電磁波のことを指します。
これを「可視光」と言います。
この範囲以外の電磁波は、私たち人間には見ることができません。

赤い光はだいたい780nm、青い光はだいたい400nmです。
この波長は、とても短いです。

マイクロ波

一方、wifibluetoothは「マイクロ波」と呼ばれていて、
波長が約100μm〜1m(1μm=0.000001m)の電磁波のことを言います。
あと、電子レンジで使っている電磁波もマイクロ波です。
こちらの波長は、可視光に比べると断然長いです。

電磁波の特徴

電磁波は、波長が長ければ長い程、壁などの障害物に邪魔されずに透過します。

みなさん、壁の向こうって見えないですよね?僕にはそんな能力はないです。
これは、光の波長が短すぎて、壁をすり抜けられずに反射したり吸収されたりするからです。
私たちが見ることができる「可視光」の電磁波も、同じ理由で障害物をすり抜けられません。

では、マイクロ波はどうでしょうか?
先ほど説明した通り、wifibluetoothは波長が長いため、違う部屋にwifiルーターを置いていても、
壁をすり抜けてパソコンやスマホwifibluetoothの電磁波を受信することができます。
つまり、パソコンやスマホで、壁の向こうのwifiを透視しているのです。
私たちも、もしwifiなどの電磁波を見ることができたら、壁の向こうを透視できるかもしれません!

最後に

いかがでしたか?普段何気なく使っているwifibluetoothですが、仕組みが分かると面白いですね。
書きたいことはもっとあるのですが、次回のお楽しみということで、今回はこれで終わります。

外部サイトからのDB接続について(MYSQL)

こんにちは、yagiyagiです。
早速ですが、本題に入ろうと思います。

 

外部サイトからDBサーバ(MYSQL)に接続する場合、セキュリティの観点から
通常、接続できません。権限を付与する必要があります。

GRANT ALL PRIVILEGES ON *.* TO スキーマ名@"%" IDENTIFIED BY 'passward' WITH GRANT OPTION;

ですね。ググるとよく見かけます。(詳細な説明は他サイトを参照してください)
これで、少しハマってしまった経験があるので、ご紹介したいと思います。

どういう経緯かはよく覚えていないのですが、

GRANT ALL PRIVILEGES ON *.* TO hoge@"%" IDENTIFIED BY 'passward1' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO hoge@"192.168.1.199" IDENTIFIED BY 'passward2' WITH GRANT OPTION;

という2つのSQL文を発行しました。エラーなく正常終了します。
そして接続しようと試みたところ、コネクションエラーが発生。。。

うーーん、なぜ接続できないのだろうかと悩み、ユーザ情報を確認してみると

select user, host,password from mysql.user;
+------+---------------+----------+
| user | host          |password  |
+------+---------------+----------+
| hoge | %             |passward1 |
| hoge | 192.168.1.199 |passward2 |
+------+---------------+----------+

あれ!?パスワードが微妙に違う。。。(汗)

もうおわかりですね。
hoge/passward2で接続を試みた結果がコネクションエラーでした。。
hoge/passward1で接続するかキチンと意図した権限を付与しなおすと正常接続できました。

ググってコピペで実行。。。よくやってしまう行為ですが
開発環境とはいえ、意味を理解して実行しないといけないなと反省しました。というお話です。

ディスプレイが・・2

こんにちは、ishinoです。

ディスプレイが・・未だにまぶしいです(+_+)

 

以前にもこんな記事を書きました  → ディスプレイが・・

 

現在、前記事で紹介したプラグインを全く使っておらず、なんでかなーと思いながら
またいろいろ調べていたところ、いいものを見つけました!

 

それはこちらです → f.lux

 

以前からあったアプリのようです。

このアプリは、画面のブルーライト成分を日の出からの時間をはかって自動的に調節してくれます。

 

個人的な感想ですが、これを使い始めてから目が全然疲れないです!!
1日中PCとにらめっこをしていても疲れません。
画面を見ることがストレスにならないので、思いっ切り作業に集中できます。

もうアプリオフの状態で画面を見るのが怖い(笑)

 

この威力は、僕が説明するよりインストールしてもらう方が早いと思います。

日頃、そんなに目の疲れを感じていない人でも、普段から目を労わってあげることは
大切だと思いますので、皆さんぜひサクッとインストールしてみてください。

 

最後におまけですが、iPhoneアプリも出ていました!
まあ、僕はスマホ持ってないので関係ないケド(笑)

 

ISUCON5に「京都スイーツnext」で参加してきました

同僚のishinoと2名でisucon5に参加してきました。

僕はISUCON1の時から参加してるので、今のところ皆勤賞です。
毎年楽しみにしているイベントで今年もすごく楽しかったです。
運営の皆さま、本当にありがとうございました。

結果はスコア、13094。使用言語はPHPです。

しかし本戦出場ならず、、、

「ISUCON5 本選出場者決定のお知らせ」
http://isucon.net/archives/45532743.html

残念。おしかったな~

事前準備

今回、いつも一緒に参加しているスーパープログラマがいなかったので
いつも丸投げしていたアプリ周りの修正に不安を感じていました。
ですので普段業務で一番使っている「PHPを使う」という事にしました。

使った事のなかったGCPの練習もかねて、
Isucon4の問題のイメージが提供されていましたので、起動して
PHP実装を眺めてたりしました。

GCP、すごく使いやすいのですが、インスタンスへのSSHログインにGCP専用のツールみたいなのが必要なのが嫌で
練習中も本番中も ParmitRootLoginはYesだったりパスワード認証許可したりして
ターミナルから直接SSHできるようにしてました。

当日

前日に会社で「キャンプ」が行われて、深夜まで雑談したりで疲れ切ったのちの参加。
ほんと直前までキャンプ場にいましてバタバタしてました。
ですが、アウトドアでIT関連の事から離れた状態でしたので、逆にすっきりした気持ちで参加できたかも。

本戦開始

イメージデータの共有がきたので、ひとまずインスタンスを起動し、
何も触ってない状態でベンチマークをリクエストしました。
が!ベンチが通らない!!(Fail)

え。初期で通らない実装なの?
みたいな感じでプチパニックになりました。

このとき、ベンチからのリクエストが届いてるか、などを確認すればよかったのですが、
GCPの設定がおかしいのか?と無駄に時間を使ってしまいました。

初期で通ってた人もいたようですが、僕らは一度も通らなかったのでいまだに原因ふめい。なんでだろう。
ですが、ログインがめちゃくちゃ重かったり、スコアが80とかから300くらいの人もいたので、
「きっと初期の実装の時点で重すぎてベンチ通らないに違いない」、と結論付けて
PHPへの切り替え作業をしました

systemd

もちろん使った事なかったので、PHPへの切り替えでも時間がかかりました。
PHPのnginx.confは静的ファイルの配信があらかじめnginxからになっててらっくちーん。
もちろんPHPに変えてもいまだベンチは通らない。
でも画面は表示されているのでとりあえず、チューニング開始

チューニング開始

ひとまず、ベンチが通らないと心が不安でいっぱいだったので
簡単に修正できる部分をとりあえずやってみましょう、となりました。

ささっと見てログインの部分でハッシュにしたりしてるのが簡単そうだったので、
パスワード部分に平文を入れちゃってベンチ。
これでようやくスコアが出るようになってた気がします。

ひたすらSQLを書く

・N+1問題
・commentsテーブルにAlterでカラム追加。(30分以上かかった)
・relationsのデータが必ず2つ1組みで入ってたのでselectをoneだけにする
・ORDER BYのcreated_atをidにしてCreated_atのindex消す
・footprintsのgroup byの部分を修正

ほっとんどの時間を/のSQL改修に充てててました。
ミドルウェアの設定はAlterの実行中に設定などを確認、修正をしたくらいです。
(若干my.cnfにははまりました)

結局、ボトルネックmysqlで改修できる部分もまだまだ残したままフィニッシュ
となりました。

全体的に

今回のお題がほんとに楽しく感じました。

・DBのデータが非常に多く複雑なので全メモリ化は実質不可能。
・ログイン処理があり、ログインによって表示される情報が異なるので、フロント側でのキャッシュは難しい(あまりキャッシュヒットしなさそう)
・実際にありがちな「小規模なときはよかったけど、サービスが成長してから問題が出始めた」みたいなリアルな感じ

というところが特に楽しかったです。

あとは例年どうり、新しい事をいろいろ知れてよかったです。
systemdは見ないふりしてたんですが、やっぱり少し触ると、「いいなこれ」ってなりますね。

今年も楽しかったです。
ありがとうございました!

Windows 10にしたら Macからリモートデスクトップが繋がらなくなった

こんにちは、はらぐちです。

最近までWindouwsのパソコンを起動すると、デスクトップ画面右下のインジケーターに
「Windows10を入手する」というボタンが表示されるようになっていましたが、皆さんご存知でしょうか?
これは、今年7月にリリースされた、Windows10への無料アップグレードを予約できるというもので、
Windows利用者の間で話題になっています。

私もこの機会にアップグレードしてみたのですが、その際Remote Desktop Client for Macを使った
リモートデスクトップが使用できなくなってしまったので、その時のお話しをします。

具体的には、Windows10にしてから「接続先のコンピューターのIDを確認できません。」
というエラーが出て繋がらなくなりました。
Windows8Windows Server 2012でも同様の現象となる、との事。

AppStoreにある Microsoft リモート デスクトップというアプリだと問題ないのですが、
こちらはキーボードのキーバインドが個人的に気に入らないので、
Remote Desktop Client for Macを使い続けたいと思っているので、調べてみることにしました。

結果、以下のようにすると接続できるようになりました。

検索で "gpedit.msc" を入力し、以下のように設定を変更します:
ローカルコンピュータポリシー
コンピュータの構成
管理用テンプレート
Windows コンポーネント
リモートデスクトップサービス
リモートデスクトップセッションホスト
セキュリティ
リモート(RDP)接続に特定のセキュリティレイヤーの使用を必要とする: 有効
オプションパネルで、セキュリティレイヤーを "RDP" に変更する
リモート接続にネットワークレベル認証を使用したユーザー認証を必要とする: 無効
再起動

(参考)
http://zakkied.hatenablog.com/entry/2013/09/30/132342

具体的にどのような作業なのかよくわかっていないのですが、ローカル内で使いたいだけなのでOKとしました。

なにかの参考になれば幸いです。

td-agentにてAWSのRDS(postgres)のログをTDに送信

AWSのRDSはLinuxサーバではない為、こちらからいろいろな設定ができません。

その為、どのようにPostgresのログを送信すればよいか、いろいろ試行錯誤したのでその備忘録です。
前提として、RDSに接続できるLinuxインスタンスにtd-agentが入っている状態が必要です。

fluent-plugin-rds-pgsql-log

https://github.com/shinsaka/fluent-plugin-rds-pgsql-log
RDSのpostgresのログを取得するには上記のプラグインを利用します。

このプラグインはAWS RDSのログを取得し、td-agentのsourceとして利用できるようにするプラグインです。

ただ導入にあたり、依存関係に「AWS SDK」があるのですが、パッケージで導入したtd-agentでは
fluentd-gem fluent-plugin-rds-pgsql-log にて導入ができませんので、以下のように導入します。

まず、td-agentに入っているrubyからaws-sdkをインストール

/usr/lib64/fluent/ruby/bin/gem install aws-sdk

fluent-plugin-rds-pgsql-logのプラグインを直接プラグインディレクトリにほおりこむ

wget https://raw.githubusercontent.com/shinsaka/fluent-plugin-rds-pgsql-log/master/lib/fluent/plugin/in_rds_pgsql_log.rb -P /etc/td-agent/plugin

これでpostgresのログをTDに送信できました。

<match td.postgres.log>
type tdlog
apikey *****************************
auto_create_table
database postgres
table log
buffer_type file
buffer_path /var/log/td-agent/buffer/td
flush_interval 180s
</match>
<source>
  type rds_pgsql_log
  region ap-northeast-1
  db_instance_identifier prod-auth
  access_key_id ******************
  secret_access_key *********************************
  refresh_interval  30
  tag td.postgres.log
  pos_file /var/log/td-agent/pgsql-prod-auth-log-pos.dat
</source>

こんな感じのデータが送信されます

{"message_level"=>"LOG", "time"=>"1436510427", "ident"=>"postgres", "host"=>"10.0.0.21(22112)", "database"=>"[unknown]", "user"=>"[unknown]", "pid"=>"6080", "log_file_name"=>"error/postgresql.log.2015-07-10-00", "message"=>"  connection received: host=10.0.0.21 port=53253"}

host部分がSQL発行元IPになる

管理の上ではhost部分はRDSの名前になっているのが望ましいので、host部分を強制的に変更します。
データをリフォームする為に「fluent-plugin-record-reformer」というプラグインを利用しました。

https://github.com/sonots/fluent-plugin-record-reformer

wget https://raw.githubusercontent.com/sonots/fluent-plugin-record-reformer/master/lib/fluent/plugin/out_record_reformer.rb -P /etc/td-agent/plugin

最終的なtd-agent.confは以下のようになりました。

<match td.postgres.log>
type record_reformer
renew_record false
enable_ruby false
tag reformed.td.postgres.log
# 強制的に文言を変更する
host rds-postgres01
ident postgres
</match>
<match reformed.td.postgres.log>
  type tdlog
  apikey *****************************
  auto_create_table
  database postgres
  table log
  buffer_type file
  buffer_path /var/log/td-agent/buffer/td
flush_interval 180s
</match>
<source>
  type rds_pgsql_log
  region ap-northeast-1
  db_instance_identifier prod-auth
  access_key_id ******************
  secret_access_key *********************************
  refresh_interval  30
  tag td.postgres.log
  pos_file /var/log/td-agent/pgsql-prod-auth-log-pos.dat
</source>

平成27年度春期 情報処理技術者試験(PM) 受験録

ちょっと日はたってしまいましたが、秋期に引き続き、受験してきました。区分はPM。
秋期の結果は聞かないでください。(涙)

いつも午後2の論文でNGくらってしまうんですね~><
色々、対策はあると思うのですが、日頃忙しいことを理由に、ついつい実務経験をベースに記述してしまう。
のはダメなのはわかっているのですが。。。ついつい。

前回合格分の午前1免除も切れてしまって、午前1から受験することに。
前回の受験録同様、気になる設問を1つ記載しておきます。

プロジェクトマネジメントにおけるリスクの対応例のうち、PMBOKのリスク対応戦略の一つである転嫁に該当するものはどれか。
ア あるサブプロジェクトの損失を、他のサブプロジェクトの利益と相殺する。
イ 個人情報の漏えいが起こらないように、システムテストで使用する本番データの個人情報部分はマスキングする。
ウ 損害の発生に備えて、損害賠償保険を掛ける。
エ 取引先の業績が悪化して、信用に不安があるので、新規取引を止める。
【出典:平成27年度 春期 プロジェクトマネージャ 午前1 問19】

PMたるもの、何かあったときのリスク対応は基本ですよね。
まあ、コンティンジェンシプラン立てても結局は、根性でカバーってなってしまうことが多いのですが(汗)

ITで最適化とか言ったりしてますけど、そのITを生み出す現場は最適化されていなかったりします。
これはPMの責務なので、なんとかしたいと日々悶々としているところではあるのですが。。

話はそれましたが、答えはわかりますでしょうか。
正解は、IPAのサイトに過去問の答えがありますので、そちらでご確認ください。(笑)

Page 1 of 5

© SEEDS Co.,Ltd.