本文へジャンプします。

非公式PHP SDKをアップデートしました

こんにちは、わたなべです。

先日、6月16日に、Nifty Cloudにもファイアウォール機能が追加されましたが皆さんもうお使いですか?

既に中の人による紹介記事も掲載されているので、ご利用されている方も多いのではないかと思います。

ルールをコントーロールパネル上で一元管理出来ますし、サーバーまで到達する前にフィルターされるのは安心なのでまだご利用されていない方は是非使ってみると良いと思います。

さて、このファイアーウォール機能はコントロールパネルからだけではなくAPIをサポートしており、公式のJavaSDKやCLIコマンドを使用すればAPI経由で設定が可能です。

という事で今回は、以前このブログで書いた非公式のPHP SDKにファイアーウォールAPIのサポートを追加したので紹介したいと思います。

追加されたファイアーウォール関連API

今回追加されたファイアーウォール関連のAPIは以下になります。

  • AuthorizeSecurityGroupIngress
  • 指定したファイアウォールグループへ許可ルールを追加します。   

  • CreateSecurityGroup
  • ファイアウォールグループを新規作成します。

  • DeleteSecurityGroup
  • 指定したファイアウォールグループを削除します。   

  • DeregisterInstancesFromSecurityGroup
  • 指定したファイアウォールグループから、指定したサーバーをはずします。

  • DescribeSecurityActivities
  • 指定したファイアウォールグループのログ情報を取得します。

  • DescribeSecurityGroups
  • 指定したファイアウォールグループの設定情報を取得します。

  • RegisterInstancesWithSecurityGroup
  • 指定したファイアウォールグループを指定したサーバーへ適用します。

  • RevokeSecurityGroupIngress
  • 指定したファイアウォールグループから許可ルールを削除します。   

  • UpdateSecurityGroup
  • ファイアウォールグループの設定情報を更新します。   

今回、非公式PHP SDKでは上記すべてのAPIに対応しましたが、この中でAPI経由で使用される事が多そうなAPIの使用方法を簡単に解説したいと思います。

ファイアウォールグループを使う

RegisterInstancesWithSecurityGroup/UnregisterInstancesWithSecurityGroupを使って指定したファイアウォールグループをサーバーへ適用したり、外したりする事が出来ます。

サーバーを追加

ファイアウォールグループにサーバーを追加する場合、以下のように設定が可能です。
下記は、’apitest’という名称のサーバーに ‘default(Linux)’を適用するサンプルです。

<?php
include_once('niftycloud.sdk.class.php');
include_once('services'.DIRECTORY_SEPARATOR.'niftycloud.class.php');
$apiparams = array(
    'access_key' => "アクセスキー",
    'secret_key' => "シークレットアクセスキー",
);

$api = new NiftyCloud($apiparams);
$params = array('GroupName'=>'default(Linux)', 'InstanceId'=>'apitest');
$result = $api->register_instances_with_security_group($params);
if ( $api->isError() ) {
    echo "errorn";
} else {
    foreach($result->instancesSet->item as $item) {
        echo "instanceId:{$item->instanceId}n";
    }
}

ファイアウォールグループ名と、適用するサーバー名を指定して’register_instances_with_security_group’を呼び出します。また、以下のように、InstanceIdに配列を指定する事で複数のサーバーを一度に適用する事も可能です。

...
$params = array(
    'GroupName'=>'default(Linux)',
    'InstanceId' => array(
        'apitest1',
        'apitest2',
    )
);
...
サーバーを外す

サーバーをファイアーウォールグループから外す場合は、ファイアーウォールグループへの適用とほぼ同様ですが以下の様になります。

<?php

include_once('niftycloud.sdk.class.php');
include_once('services'.DIRECTORY_SEPARATOR.'niftycloud.class.php');

$apiparams = array(
    'access_key' => "アクセスキー",
    'secret_key' => "シークレットアクセスキー",
);

$api = new NiftyCloud($apiparams);

$params = array('GroupName'=>'default(Linux)', 'InstanceId'=>array('apitest'));
$result = $api->deregister_instances_with_security_group($params);
if ( $api->isError() ) {
    echo "errorn";
} else {
    foreach($result->instancesSet->item as $item) {
        echo "instanceId:{$item->instanceId}n";
    }
}
新規作成するサーバーにファイアウォールグループを適用

今回追加されたAPIではありませんが、サーバー作成時に指定したファイアーウォールグループを適用するオプションが追加になっています。
以下がサーバー作成時にファイアーウォールグループを適用するサンプルです。

<?php
include_once('niftycloud.sdk.class.php');
include_once('services'.DIRECTORY_SEPARATOR.'niftycloud.class.php');

$apiparams = array(
    'access_key' => "アクセスキー",
    'secret_key' => "シークレットアクセスキー",
);

$api = new NiftyCloud($apiparams);
$result = $api->run_instances(array(
    'ImageId' => 1, // CentOS 5.3 32bit Plain
    'KeyName' => '適用するSSHキー名',
    'InstanceType' => 'mini',
    'InstanceId' => 'apitest',
    'AccountingType' => NiftyCloud::ACCOUNTING_TYPE_PAYPER,
    'Admin' => null,
    'Password' => 'rootのパスワード',
        // Firewall機能が有効でない環境の場合は以下を指定するとエラーが発生します。
    'SecurityGroup' => 'firewall01',
));
if ( $api->isError() ) {
    echo "Errorn";
} else {
    echo "{$result->instancesSet->item->instanceId}: {$result->instancesSet->item->instanceState->name}n";
}

SecurityGroupに適用したいファイアーウォールグループ名を指定する事で、作成したサーバーに適用されます。また、以下のようにファイアーウォールグループ名を配列で指定する事で一度に複数のファイアーウォールグループを適用する事が出来ます。

...snip
    'SecurityGroup' => array(
        'firewall01',
        'firewall02',
    )
...snip
SSL証明書関連API

ファイアーウォール機能と同時にリリースされたSSL証明書関連の機能の対応ですが、試験の為にSSL証明書を実際に取得するのはちょっと厳しいので今回は対応していません。
DryRunの様なオプションがあれば実装しやすいんですがねぇー。どうでしょうか(^^;?

まとめ

今回は以上です。繰り返しになりますが、ファイアーウォール機能を利用するとルールを一元管理出来ますし、サーバー作成時に設定済みのファイアーウォールグループを適用出来るのでかなり便利になると思います。

非公式PHP SDKは、githubで公開しております。今回紹介したAPI以外のファイアーウォール関連APIを利用するサンプルも含まれておりますので、是非使ってみてください。

最後に念のため…、非公式PHP SDKは私わたなべが個人的に開発した物ですのでくれぐれもNIFTYさんに問い合わせ等しないようお願いします。

ニフティクラウド 導入相談窓口
ニフティクラウド 無料セミナー

閉じる

閉じる

クラウドブログ編集部

クラウドブログ編集部

ニフティクラウド ユーザーブログ編集部のアカウントです。 編集部からのお知らせや、レギュラーライター以外のゲストによる寄稿記事を掲載していきます。

浜中 慶

浜中 慶

1980年、神奈川県生まれ。2003年ニフティ入社。 ポータルサイト開発を中心に、音楽配信サービス、CGMサービスなど様々なプロジェクトに企画/デザイン/システム担当として参加。現在は@niftyのポータルサービス向けコンテンツ管理システムの企画/開発/運用を担当。

吉田 雄哉

吉田 雄哉

株式会社co-meetingの創業メンバー。「取締役&External- facing Technologist」と名乗り新しいIT技術を広く伝える活動とWebアプリケーション開発を行う毎日。パッケージベンダーでのSaaS立上げ・製造業の情報システム部門で企画やPM・受託開発と従事してきたため、ベンダーサイドとユーザサイド の両方の視点を持ち合わせる。

石田 健亮

石田 健亮

株式会社ドリーム・アーツで小売事業者向けSaaS「Shopらん」を企画、開発。メインの仕事はプログラマーだがサーバー管理や営業もこなすユーティリティプレイヤー。最近好きな事はパフォーマンスチューニング。特に並列化プログラミングがマイブーム。キライなことはデータセンターでの作業。騒音と乾燥が弱点。ニフティクラウドでデータセンターに行く必要が無くなったことが本当の利点だ と思っている。

五月女 雄一

五月女 雄一

ニフティでは「インフラを守る簡単な様で奥が深いお仕事」をしています。 夢はインフラの気持ちが読めるエンジニアになること。

わたなべ かずひろ

わたなべ かずひろ

専門学校卒業後、ソフトウェア開発会社で電力系統制御システムの開発に従事。その後、CD-ROM等マルチメディア系PCソフトの開発を経て、1998年フリーランスに。 2000年8月に株式会社イーツーの設立に参画。携帯を含む様々なWeb系のシステム開発に携わる。現在はiPhone/Androidアプリなどの開発も手がけている。

市角

市角

ニフティクラウドのコントロールパネル設計・開発をメインに、たまにインフラの運用やお手伝いもやっていたりします。コントロールパネルや新機能の活用方法、アイデアなどを中心に書いていく予定です。

仲山 昌宏

仲山 昌宏

歌って踊れるインフラエンジニア兼、PHPもRubyもJavaも書くPerl使い。 物理サーバの運用に飽きて、フルラックに格安サーバ詰めて自宅プライベートクラウドを構築中。 今年は個人的には分散処理を攻めていきます。

猪飼 賢広

猪飼 賢広

1984年、愛知県名古屋市生まれ。大学は福島県にある某大学。2008年ニフティに入社。 開発系部署に配属後、主に各種テーマサイト開発のシステム面調整、開発進行管理役などとして参加。 現在もPC・ガラケーサイトの開発まわりを担当。インフラまわりを触る案件にも携わっており、日々修行中。 好きな芸人はなかやまきんに君とレイザーラモンRG。

久江 裕之

久江 裕之

ニフティクラウドのインフラ運用、OS提供の仕事をしています。 新しいOSやイメージが出る時にこのブログでご紹介いたします。入社5年目。一流のインフラエンジニアを目指して日々勉強中。

竹内 豪

竹内 豪

ニフティクラウド エンジニア

山口

山口

ニフティクラウドの基盤設計、新サービス/アライアンス/インフラ企画、その他雑用全般を担当しています。 クラウドに欲しい機能や、こんなふうに使ってほしいという想いが共有できれば良いですね。

芳中 隆幸

芳中 隆幸

ニフティクラウドの開発、運用を担当しています。

酒井 浩平

酒井 浩平

ニフティクラウドの中にいます。 ネットワークまわりの運用・開発や自動化などに取り組んでいます。 すべてのエンジニアを幸せにすることを目指しています。

higebu

higebu

ニフティクラウド IaaSのエンジニアです。 ネットワーク、DRサービス with VMware vCloud® Air™ Technology辺りの担当をしています。

武田

武田

ニフティクラウドの開発・運用を担当しています。 各種機能の内容についてなどで執筆させていただく予定です。

福澤真

福澤真

ニフティクラウドのコンパネ開発、運用をしています。

森藤 大地

森藤 大地

データに関する仕事が好きです。

宮原徹

宮原徹

日本仮想化技術株式会社 代表取締役社長兼CEO。仮想化技術に関するコンサルタントとして長年活動しており、特にベンチマークテストによる性能評価を得意としている。

荒谷翔

荒谷翔

株式会社はてなでMackerelのセールスデベロッパーとして勤務しています

東條 望

東條 望

2014年にニフティへ中途入社。 入社後から現在まで、ニフティクラウドのサービス企画・開発を担当しています。 各サービスの紹介を執筆させていただく予定です。

世良迪夫

世良迪夫

ニフティクラウドのRDBなどを担当しています