2010年2月2日火曜日

ILM2007FP1 Service Pack1(build 3.3.1139.2)

FIMのリリースを目前に控え、Hands-on Labなど各種イベントなども本国では企画されているようですが、まだまだ現役なILM2007FP1にService Packがリリースされています。

更新内容ですが、大きな点はExchange2010へのプロビジョニングのサポートです。
具体的には、GALSync MA もしくはAD MAでExchange Server 2010 へのプロビジョニングが可能になっています。※ドロップダウンボックスでExchange2010か2007かを選択できるようになっています。

ただし、この機能を使うための条件が数点。
  • ILM2007のサービスアカウントがドメインアカウントであること
  • ILM2007サーバドメインに参加していること(プロビジョニング対象のドメインでなくてもOK)
  • ILM2007サーバにPowerShell2.0がインストールされていること(このことにより、ILMサーバのローカルにExchange管理コンソールをインストールしなくてもOKになっています)
  • Exchange2010で使われるmsExchHomeServerName属性を操作するためにはExchangeUtils.CreateMailboxメソッドを使うこと

尚、前のエントリで紹介したとおり、ほぼ同時期にリリースされたFIM2010RC1 Update3についても同様の機能が追加されています。基本的にILM2007とFIM Synchronization Serviceはほぼ同じものなので、しばらくは並行してUpdateされることになるのかも知れません。

2010年2月1日月曜日

FIM2010RC1 Update3リリース

月末~月初ということで更新が滞っていましたが、その間にFIM関連も少々情報UPDATEがありましたので、お知らせします。

本題ですが、本UPDATEがリリース前の最終UPDATEだそうです。
connectサイトにて配布が開始されています。

UPDATE内容は下記の通りです。

1.前提となる環境
  ※このUPDATEから必要となる環境が変わっているので注意が必要です。
  • Windows Installer 4.5
  • FIM Service : SQL Server 2008 Service Pack 1
  • Outlook用Add-In : Outlook 2007 Service Pack 2

2.新しくサポートされた環境
  
 ◆FIM Certificate Management向け
  • Windows Server 2008 R2
  • Windows Server Datacenter Edition
 ◆プロビジョニング先として
  • Exchange2010
 ◆その他
  • SQL ServerのFailOver Clusterのサポート
  • FIM Serviceを停止しない状態でのデータベースバックアップのサポート

3.改善点(中心はFIM Synchronization Service)

  • バグ修正(マルチマスタ属性関連)
  • FIM MAがexport中のエラーメッセージを保持する様に修正(FIM Synchronization Serviceのイベントログを見る必要性がなくなった)
  • リソースの削除を行う権限を持つMAを複数持つことを可能とした
  • 以下の2つのプロビジョニング用の関数を追加した
  • 1)NULL
  • 2)ReplaceString
  • GAL MAのサポート(ILM2007 FP1 SP1と同様の改善)
  • Forestまたぎのグループ管理用にDomainSynchronizationActivityの代わりにビルトインロジックの導入

4.新しいMPRタイプの追加

  • Set Transition MPR(Setのメンバシップの変更時に適用するポリシーの作成を簡単にすることが可能)

尚、このアップデートを適用することにより、グループ管理ワークフローの定義を削除してしまうので、注意が必要です。

2010年1月28日木曜日

どうなる?Sun IdM ( 2010/1/30 追記 )

2010/1/30更新
SunのシニアソフトウェアアーキテクトのSébastien Stormacq氏のblogにまとまっているので少々修正です。(@tkudoさんに感謝)

そろそろ眠気がピークですが、なんとかIdM部分だけは、、と思って頑張ってます。

というわけで、日本時間1/28 2:00-7:00という極東に住んでいることを後悔するようなスケジュールで開催されている「Oracle + Sun Strategy Update」ですが、IdM部分について軽く紹介しておきます。
(眠いので間違っている可能性ありです。気づいたら直します)

結果から書きますが、基本的な方針としては「Oracle製品に統合」です。
















細かく分野ごとに見ていくとこんな感じです。

分野方針旧Sun製品Oracle製品
Directory ServicesOracle Internet DirectoryとSun Directory Serverの両方をサポートする。OpenDSへの投資は継続する。Sun Java System Directory ServerOracle Internet Directory
Role ManagementSun Role ManagerはSuiteから切り出されてIdentity AnalyticsへSun Role ManagerOracle Role Manager
Provisioning/Lifecycle ManagementOracle Identity Managerを戦略製品として継続させる。Sun Identity ManagerはSPMLアダプタとしてOracle Identity Managerへ統合される。Sun Identity ManagerはOracle Wavesetへリネーム。Sun Identity Managerからのマイグレーションツールを提供する予定。Sun Identity ManagerOracle Identity Manager
Access ManagementOracle Access Managerを戦略製品として継続させる。OpenSSOからのマイグレーションツールを提供する予定。OpenSSO STS機能を取り込みエンハンス。OpenSSOOralce Access Manager
Virtual DirectoryOracle Virtual Directoryを戦略製品として継続させるSun Java System Directory Server EEOracle Virtual Directory
eSSOOracle Enterprise Single Sign-On Plusを戦略製品として継続させる-Oralce Enterprise Single Sign--On Plus
権限管理(Entitlement Management)Oracle Entitlements Serverを戦略製品として継続させる-Oracle Entitlements Server
Identity FederationOracle Identity Federationを戦略製品として継続させ、OpenSSOのfedletを取り込む。OpenSSOからのマイグレーションツールを提供する予定。
OpenSSOOracle Identity Federation


※ちなみにSun Java System Directory Server Enterprise Editionに入っていたIdentity Synchronization for Windowsはどうなるんだろう??LDAP-ADのお手軽同期ツールとしては良かったんですけどねぇ。

尚、サポートに関しては統合後も継続されるようですので、既存ユーザは保護されるようです。

とりあえずまた追加情報などあればアップデートしていきます。

2月は情報セキュリティ月間!

今からOracleとSunの今後の戦略に関する発表があるので、眠気覚ましにblogでも更新。


今日(というか昨日)はJNSAの賀詞交歓会&JNSA賞の授賞式だったのでベルサーレ神田へ行ってきました。

賀詞交歓会は新年会というかお祭りなので、色々な方々が来ておられましたが、中でもガバメント系(総務省、経済産業省、内閣官房情報セキュリティセンター/NISC)の方々の冒頭挨拶で、みなさん口をそろえてパワーシフトの話と事業仕訳けの話をしておられたのが非常に印象的でした。まぁ当然と言えば当然なんでしょうが。。

NISCの方のご挨拶の中で「そう言えばそんなのあったな~」と思いだしたのが、2月2日は「情報セキュリティの日」という話。何で思いだしたかというと、どうやら今年の2月は「情報セキュリティ月間」になったという話があったため。かなり急な話だったらしく、まだNISCのページにも何にもアナウンスされてません。。。

他にもISF(Internet Security Forum)とJNSAの提携について改めて話があり、CEOのハワード・シュミット氏のビデオメッセージおよびCOOの(ビル・コーシー氏による挨拶がありました。

その後、賀詞交歓会の中の一コマであるJNSA賞の授賞式があったのですが、私の参加している「セキュリティにおけるアイデンティティ管理WG」がワーキンググループの部で受賞しました。
私も盾をいただいたのでその写真を。。




















後ろにFenderのストラップが微かに見えるのはご愛敬。ちなみにストラップはFenderですがギターは何故かTuneのエレガットです。Tuneというとベースのメーカというイメージですが、ギターもちゃんと出してます。(すみません、全然関係ない話でした)


ちなみに賀詞交歓会の前に開催されていたNSF/Network Security Forum 2009では、IIJテクノロジーの方、ラックの方、Googleの方によるクラウドのセキュリティに関するパネルディスカッションなどがあったようです。残念ながら私は参加できなかったので資料だけ貰ってきましたが、全体にモヤっとした概念をモヤっとまとめるしかないのが現状のこの領域の話、ということのようでした。

と、四方山話をしているうちにそろそろLarry Ellisonの話の時間が迫ってきたので、このあたりで。。

2010年1月16日土曜日

ADFS2.0 & WIF on AzureでオンプレミスとクラウドのSSO その3

意外とご好評を頂いた?このシリーズも今回で最終回です。

いよいよ今回は、
3.Azure上のアプリケーションを作成・発行する
4.シングルサインオンしてみる
をお送りします。


初回にも書きましたが、Azure上でもオンプレミスと同じコードが動きますが、環境面での違いを吸収するために少々設定が必要になります。

環境面での違いをまとめると、下記のようになります。

ポイントAzureオンプレミス
証明書のインストール方法サービス毎に証明書をアップロードIISへの設定
Webサイトへの証明書のバインド方法プロジェクト側(WebRole)で使う証明書を指定IISのサイトの設定
WIFコンポーネントの呼び出し方法プロジェクトにWIFコンポーネントをパッケージングして一緒にデプロイアプリケーションサーバにインストールされているWIFコンポーネントへアクセス


では作業を始めます。
流れとしては、
・Azure上へサービスを作成する
・証明書を準備する
・Azure上へ証明書をアップロードする
・アプリケーションを作成する
・Azure上へデプロイ/実行する
・ADFS2.0にRelyingPartyを設定する
・Azure上のアプリケーションの動作を確認する
・オンプレミスアプリケーションとのSSO動作を確認する
となります。

少々ステップが多くなりますが、順番に見ていきます。

◆Azure上へサービスを作成する

 プロジェクトを開き、New ServiceからHostedサービスを作成します。
 注)ここで作成したサービス名を証明書にも使うので記録しておきます。
   今回は「pasvfed」という名前を使いました。







 サービスを追加し、Hosted Servicesを選択します。













 以下のパラメータでサービスを作成します。

項目設定値備考
Service Labelpasvfed
Public Service Namehttp://pasvfed.cloudapp.net
RegionAnywhere US何故かAnywhere AsiaだとDr. Watsonが出たので



◆証明書を準備する

 証明書を作成するのにネイティブ暗号化APIモジュール(CAPICOM)を使用します。
 もちろん上記リンクからダウンロードしても良いのですが、Identity Training Kitに入っているので今回はそちらを使いました。(CAPICOMそのものよりも後で出てくる証明書作成のバッチファイルが欲しかったので)
 ※ちなみにCAPICOMは<Identity Training Kitインストールフォルダ>\Labs\WindowsAzureAndPassiveFederation\Source\Setup\Scripts以下にあるcapicom_dc_sdk.msiです。

 インストールが終わったら証明書の作成とインストールを行います。
 インストールは同じく<Identity Training Kitインストールフォルダ>\Labs\WindowsAzureAndPassiveFederation\Source\Assets以下にある、CreateCert.cmdを使います。

 まず、Visual Studioコマンドプロンプトを管理者で実行します。




















 CreateCert.cmdのあるフォルダへ移動して、以下を実行します。

xxxx:\> CreateCert.cmd pasvfed

 このとき、引数に先程Azure上で作成したサービスの名称を渡します。

 実行すると、秘密キーのパスワードの作成、秘密キーのパスワード入力を求められるので「abc!123」を入力します。
 ※CreateCert.cmdをそのまま使う場合、パスワードはabc!123である必要があります。
  詳しくはバッチファイルの中を見るとわかります。























 その後、証明書インストール時にセキュリティの警告が出るのが「はい」をクリックします。





















 コマンドが成功するとcertsフォルダの中に、
 ・pasvfed.cloudapp.net.cer
 ・pasvfed.cloudapp.net.pfx
 ・pasvfed.cloudapp.net.pvk
 という3つのファイルが出来上がります。


◆Azure上へ証明書をアップロードする

 先程作成した証明書をAzure上へ予めアップロードしておきます。手順としてAzureのサービスのCertificatesからManageをクリックします。







 作成した証明書(pfxファイル)を選択肢、パスワードに先ほど指定した「abc!123」を指定し、uploadを行います。










 成功するとInstalled Certificatesにアップロードした証明書が表示されます。


◆アプリケーションを作成する

・プロジェクトの作成

 オンプレミス側で実行したのと同様にVSを管理者として起動し、新しいプロジェクトを以下の通り作成します。

項目備考
プロジェクト名pasvfedAzure上のサービス名と合わせます
プロジェクトの種類Visual C# → Cloud Serviceもちろん言語は任意
テンプレートWindows Azure Cloud Service
追加するロールASP.NET Web Role
ロール名Webもちろん任意
































・SSLの設定

 次に、WebロールのSSL設定を行います。
 ソリューションエクスプローラからpasvfed→Roles→Webを右クリックしてプロパティウィンドウを表示します。


















 Certificatesメニューを開き、「Add Certificate」をクリックし、以下の通り証明書を設定します。

項目備考
Namepasvfed
Store LocationLocal Machineデフォルト
Store NameMyデフォルト
Thumbprint右側のボタンをクリックして先ほど作成したpasvfedという名前の証明書を選択する









 次に追加した証明書を使うようにエンドポイントの設定を行います。Endpointsメニューを開き、以下の様に設定します。

項目備考
HTTP無効
HTTPS有効

NameHttpsInデフォルト

Port443デフォルト

SSL certificate namepasvfedドロップダウンリストから選択


















・参照設定の追加

 Webロールのプロジェクトの参照設定にオンプレミスと同様にMicrosoft.IdentityModelを追加します。
 1点異なるのが、Microsoft.IdentityModelのプロパティに以下のパラメータを設定する必要がある点です。

 ・ローカルコピー:True
 ・特定バージョン:False


















 これは、Azure上のアプリケーションからWIFコンポーネントへアクセスできないため、
、ローカルコピーを有効にして強制的にプロジェクトパッケージにコンポーネントを含めるために行う設定です。


・STSへの参照を設定

 これはオンプレミスと全く同じ手順です。
 Webロールを右クリックして出てくるAdd STS referenceからWizardを開き、以下の設定を行います。※オンプレミスと異なる点はApplication URIのみです。

ステップ設定項目設定値備考
WelcomeApplication configuration locationプロジェクトのweb.configファイル初期状態で指定されているので変更不要
Application URIhttps://pasvfed.cloudapp.net発行先となるURIを指定
Security Token ServiceSecurity Token Service (STS) optionUse an existing STS既に作成したADFS2.0をSTSとして指定
STS WS-Federation metadata document locationhttps://adfs20.eidentity.local/FederationMetadata/2007-06/FederationMetadata.xmlADFS2.0のMetadataのエンドポイントを指定
STS signing certificate chain validation errorCertificate validation optionDisable certificate chain validationSTSが自己署名入り証明書を使っているため、証明書チェーンの確認を無効化する
Security Token encryptionSecurity Token encryption optionNo encryption


・Web.configの編集

 Add STS referenceでWeb.configは書き換わるのですが、Azure上にアップロードした証明書の参照に関する設定を一部手動で追加する必要があります。
 場所は、タグの内で、以下を追加します。

<servicecertificate>
 <certificatereference x509findtype="FindByThumbprint" findvalue="xxxxxx">
</servicecertificate>

※ThumbprintはWebロールに設定した証明書のものを使用


・Default.aspxのコーディング

 いよいよ実装ですが、コードはオンプレミスと全く同じものを使います。














 ここまででアプリケーションの実装は完了です。次はいよいよAzure上へのデプロイです。


◆Azure上へデプロイ/実行する

 ソリューションエクスプローラからpasvfedプロジェクトを右クリックして「発行」をクリックします。

 自動的にパッケージファイルが作成されたフォルダとブラウザが開き、Azureのサイトへ移動されます。

 プロジェクトからサービスを開き、Production環境のDeployボタンをクリックします。
 ※今回は直接Production環境へデプロイします。これは、Azure上のアプリケーションはローカル、ステージング、プロダクションのそれぞれの環境でURIが変わるため、Passive Federationではアプリケーション→STS→アプリケーションとリダイレクションで遷移させる際に実行環境によって遷移先が変わってしまうためです。本当はHOSTヘッダをみて遷移先を変えるなどの工夫をするのですが、STSにADFS2.0を使う場合はそのあたりの作り込みが出来ない?ので、私は開発環境、ステージング環境もそれぞれRelying Partyとして登録しています。(ただの調査不足かも知れませんが)













 先ほど出来上がったパッケージファイルと構成ファイルをアップロードします。
 ラベルは適当な文字列でOKです。



























 デプロイが完了したらRunをクリックしアプリケーションを実行します。












 ステータスがInitializingになると、しばらく時間がかかるのでその間にSTSの設定をしておきましょう。












◆ADFS2.0にRelyingPartyを設定する

 これは前回オンプレミスで作成したのと同様の手順です。今回作成したアプリケーションのFederationMetadata.xmlを読み込ませると自動的にRelyingPartyのURIとしてpasvfed.cloudapp.netが設定されます。






◆Azure上のアプリケーションの動作を確認する

 そんなことをしているうちに、AzureのサービスのステータスがReadyになります














 準備が出来たら、ブラウザでhttps://pasvfed.cloudapp.net/へアクセスしてみます。
 オンプレミスと同じようにSTSへリダイレクトされ、ログインするとAzure上のアプリケーションが表示されます。

























◆オンプレミスアプリケーションとのSSO動作を確認する

 最後に、本当にオンプレミスとシングルサインオンになっているかを試してみます。

 最初にオンプレミスへアクセスします。
 するとSTSへリダイレクトされ、オンプレミスアプリケーションが表示されます。














 そのまま、オンプレミス上の「Azureアプリケーション」というハイパーリンクをクリックします。すると今度はSTSへのログオンすることなく、Azure上のアプリケーションが表示されます。











 ということで、今回作成した環境で本当に基礎的なクレームベースのWebアプリケーションではありますが、オンプレミスとクラウドのアプリケーションのシングルサインオンが実現出来ました。

 他にも色々とやりたい事が尽きないのですが、是非今度はOpenSSOとADFS2.0のフェデレーション環境下でオンプレミスはOpenSSO、AzureはWIF/ADFSという環境でのシングルサインオンとかにも手を出したいところです。

2010年1月14日木曜日

ADFS2.0 & WIF on AzureでオンプレミスとクラウドのSSO その2

前回のポストがtwitterで意外と反響がありましたので、取り急ぎ続きを、、ということで今回は「2.オンプレミスのアプリケーションを作成・発行する」をお送りします。


実際の流れは下記の通りです。(今回はWindows7上のIIS7.5をアプリケーションサーバとして利用しています)

1.WIFを使ったClaimベースのWebアプリケーションを作成する
2.STSへのRelying Partyの設定
3.動作確認


では、それぞれのステップについて手順を見ていきます。


1.WIFを使ったClaimベースのWebアプリケーションを作成する
 ADFS2.0を使ったPassiveFederationを行う場合、アプリケーション(Relying Party)はSSLが有効化されている必要があるため、手順書は省略しますがあらかじめローカルのIISでSSLが使える状態にしてく必要があります。(今回、アプリケーションのデプロイ先をDefault Web Siteにしましたので、あらかじめ作成した自己署名入り証明書をhttpsバインドに設定しました)

 では、早速アプリケーションの実装を行います。必要となるのは以下のステップです。
 ・参照設定の追加
 ・STS参照の追加
 ・アプリケーションの実装
 ・アプリケーションの発行

 まずはVisual Studioを管理者として実行します。(STS参照の追加をするためには管理者権限が必要です)




















 次に新しいプロジェクトを以下の通り作成します。

項目備考
プロジェクト名onpremise_pasvfedもちろん任意
プロジェクトの種類Visual C# → Webもちろん言語は任意
テンプレートASP.NET Webアプリケーション



 プロジェクトが起動してきたらソリューションエクスプローラよりWIFへの参照を追加します。追加するコンポーネントはMicrosoft.IdentityModelです。
















 次にSTSへの参照を追加します。
 同じくソリューションエクスプローラからソリューションを右クリックして出てくる「Add STS reference」メニューをクリックします。
 ※Add STS referenceが出てこない場合は管理者としてVisual Studioを実行してみてください。





















 Federation Utilityが起動してきますので、以下の通り値を設定します。
 STS側でも自己署名入りの証明書を使っているので途中証明書チェーンの確認で警告が出ますが続行してください。














ステップ設定項目設定値備考
WelcomeApplication configuration locationプロジェクトのweb.configファイル初期状態で指定されているので変更不要
Application URIhttps://windows7.eidentity.local/onpremise_pasvfed/発行先となるURIを指定
Security Token ServiceSecurity Token Service (STS) optionUse an existing STS既に作成したADFS2.0をSTSとして指定
STS WS-Federation metadata document locationhttps://adfs20.eidentity.local/FederationMetadata/2007-06/FederationMetadata.xmlADFS2.0のMetadataのエンドポイントを指定
STS signing certificate chain validation errorCertificate validation optionDisable certificate chain validationSTSが自己署名入り証明書を使っているため、証明書チェーンの確認を無効化する
Security Token encryptionSecurity Token encryption optionNo encryption



 ユーティリティが終了するとソリューションエクスプローラにFederationMetadata.xmlが追加されているのと、Web.configの内容がSTSを参照する形に変更されます。


















 次はいよいよアプリケーションの実装を行います。
 今回はSTSによって発行されるセキュリティトークンからname属性のClaimを取り出して画面上のラベルに表示する、というアプリケーションを実装します。



















 実装するコードは下記の通りです。Page_load時にトークンからClaimを取り出してClaimTypeがnameならば値を画面上のラベルに表示します。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.IdentityModel.Claims;
using System.Threading;

namespace onpremise_pasvfed
{
  public partial class _Default : System.Web.UI.Page
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      IClaimsIdentity caller = (IClaimsIdentity)Thread.CurrentPrincipal.Identity;

      foreach (Microsoft.IdentityModel.Claims.Claim c in caller.Claims)
       {
        if (c.ClaimType == Microsoft.IdentityModel.Claims.ClaimTypes.Name)
        {
          lbl_claim_name.Text = c.Value;
           break;
        }
      }

    }
  }
}




 ここまでくると後はアプリケーションの発行だけです。今回はローカルIIS上にアプリケーションを発行しました。
 ここまででアプリケーションの実装・発行は完了です。


2.STSへのRelying Partyの設定
  ・FederationMetadata.xmlの読み込み
  ・Claimのマッピングルールの設定

 今度はSTS側への設定です。基本的にADFS2.0のSTSはレルム指定をしたホワイトリスト型なので、あらかじめ上記で作成したアプリケーションを指定してRelying Partyを定義しておく必要があります。

 ADFS2.0の管理コンソールを開くと、「Required: Add a trusted relying party」というタスクが表示されているので、クリックしてAdd Relying Party Trust Wizardを開始します。



















 Wizardに設定する項目は下記の通りです。


ステップ設定項目設定値備考
Select Data SourceSelect an option that this wizard will use to obtain data about this relying partyImport data about the relying party from a file
Federation metadata file locationアプリケーション側のFederationMetadata.xmlファイル必要であれば予めADFSサーバへプロジェクトディレクトリ以下のFederationMetadata.xmlファイルをコピーしておく
Specify Display NameDisplay Namehttps://windows7.eidentity.local/onpremise_pasvfed/
Choose Issuance Authorization RulesRelying party's issuance authorization rulePermit all users to access this relying party



 Wizardが終わると、Claimマッピングのルールエディタが起動しますので、ルールを追加していきます。


















 Add Ruleボタンをクリックすると、Add Transform Claim Rule Wizardが起動してきますので、下記の通り値を設定します。


ステップ設定項目設定値備考
Choose Rule TypeClaim rule templateSend LDAP Attribute as ClaimsActive Directoryの属性をクレームにマッピングします
Configure Claim RuleClaim rule nameonpremise_pasvfed任意です
Attribute storeActive Directory
LDAP AttributeSAM-Account-Nameペアでマッピングさせます
Outgoing Claim TypeName



 これで一応アプリケーションもSTSも準備が整いましたので、最後に動作確認を行います。

3.動作確認

 早速アプリケーションにアクセスしてみます。ブラウザから「https://windows7.eidentity.local/onpremise_pasvfed/」にアクセスします。











 STSであるadfs20.eidentity.localへリダイレクトされますので、ドメインユーザで認証を受けます。


















 再度リダイレクトされ、アプリケーションが表示され、claim(name)が正しく取得できていることが分かります。


















 今回はオンプレミス環境でWIF/ADFS2.0を使ったClaimベースのWebアプリケーションを実装しましたが、次回はいよいよAzure上で同様のアプリケーションを実行してみます。

MVP Award Giftが届きました!

先日の投稿でMVPアワードをいただいたことはご報告しましたが、本日MVP Award Giftなるものが届きました。

しかしデカいし重い!2.5Kgくらいあります。
記念に写真を載せておきます。














ちなみに、盾の左側の年が入った物が外れます。
MVP事務局からの連絡の中に「エコなギフトをお楽しみに」的なコメントがあったのは、これだったんですね。更新のときは年が入ったオブジェだけが送られてきて積み上げていく、という方式なんですね。














来年もオブジェを積み上げられるようにがんばります!