Google企業版Web安全服務:Google Web Security for Enterprise

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

Google(在2008/5/8)宣佈專門針對企業適用的新產品Web Security。這項服務是從Google之前收購的Postini公司的技術ScanSafe而來。基本上,這是把原先一款Postini產品重新包裝更名並壓低價格的版本。名為Google Web Security企業版的服務能提供即時惡意程式防護與URL網址過濾功能,此外這項產品也提供通報功能及政策執行功能。

Google Web Security企業版提供了主要三個方面的保護: 1 )網頁病毒和間諜軟體防護, 2 )網頁過濾和內容控制,以及3 )保護漫遊和遠端使用者。

這款產品採用ScanSafe的技術,可從Google Apps安全與相容服務所用的同一個管理控制台存取。

Google Web Security可以提供即時針對病毒、spyware進行掃瞄,並阻擋有害的網站,提供管理者有效的工具去設定過濾政策。這項服務將可監測使用者線上使用行為,並提供管理者完整的報告。Google是在去年七月買下Postini,提供企業用戶在使用應用程式代管服務時,同時也能確保線上安全與法規遵循問題。

新推出的遠端服務則是為了提供常常需要在咖啡店、飯店等,使用Wi-Fi無線上網的行動工作者安全的服務。當使用者連線到public network時,此服務可以自動將所有Web流量進行加密。如此一來,行動工作者可安全使用無線網路收發郵件或是連上網際網路,而不必要求他們登入安全的企業網路(公司VPN)。

Google Apps其中一項好處就是可以提供企業一個安全的溝通與協同作業的環境。藉由Google的雲端運算,公司可以延伸保護到更多員工的網路活動,無論該員工是在辦公室上網或是在機場上網。

這套服務每年每名使用者收費36美元,每增加保護一名行動使用者則加收12美元。

但在與類似的企業級軟件產品比較下,例如Symantec’s Endpoint Protection 等,Google提供的產品還是有不足之處。Symantec’s Endpoint Protection雖然沒有提供網頁內容過濾的功能,但它確實提供相當詳細的程式和設備控管選項。有許多軟硬體工具可讓IT管理員控管使用者或其他程式對特定程序,檔案和資料夾的存取權限,另外通過控制可以連接到機器的週邊設備來限制端點系統(endpoint)以防止資料洩漏事件的發生。

Google的這項產品並未針對這些保護措施,這些保護措施對於大型組織在處理重要資料方面提供必要的防護。因此,IT管理員可能仍需要使用其他的網路安全產品來提供更全面的安全防護。

儘管如此,但此產品的目標在於延續Google在企業用戶市場上的競爭力,持續提供Hosted、低價位的軟體與服務。另外Google正運用Postini的技術提供一系列瞄準企業用戶的安全服務,有些甚至是非Google通訊服務,以配合推動Google促進代管程式與雲端運算的計畫,並進一步深耕企業市場。

參考來源

利用Google Web Security企業版管控資訊安全

Google公佈企業版Web安全服務

Google跨入安全市場推出Web Security

如何把 Google News Timeline 當做 RSS 閱讀器來用

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

Google News Timeline是一種用來瀏覽歷史事件、現時新聞、電影上映時間等資訊的有趣工具。這些消息都會依照圖表化時間線的方式排列。

(圖片來源:谷奧digital inspiration)

假如搜尋TIME magazine(時代週刊雜誌),它就按出版時間列出各期雜誌封面,點擊進去可以到該期雜誌相應的網頁。

如果你想研究某個事件,只需要在下拉條裡選擇「News」,輸入關鍵字(比如india-pakistan印度和巴基斯坦),然後就可以按照時間線(時間先後)來閱讀所有的相關新聞了。

(圖片來源:谷奧digital inspiration) more »

用Google Apps自訂Short Links

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

首先得去申請Google Apps(Google應用服務) ,之後才能使用裡面的Google Short Links。Google Apps裡面包含(可自訂網路域名)的Gmail、Gtalk、Google日曆和Google文件。這項服務主要是吸引公司註冊,並提供給內部員工使用。

Google Short Links僅僅是Google Apps眾多服務的一種(尚在實驗中,Google Labs的試驗品之一)。要使用此服務,得先切換到控制台,再至Lab啟用。

一、啟用Google Short Links

1. 註冊Google Apps

2. 開啟控制台並以管理員帳戶登入。

3. 按下〔網域設定〕→〔一般〕,往下拉。在「控制台」區塊勾選「下一代 (僅限美式英文) 」,再按下〔儲存變更〕

4. 控制台已切換成英文介面,在〔Dashboard〕頁面按下「Add more services」,好尋找更多服務。

5. 由於Google Short Links尚在實驗室中,所以把頁面拉到最下方,按下「See more services from Google Labs」。

6. 在裡面找到「Google Short Links」進入,並輸入之前註冊時取的網域名稱,並依序設定轉址專用的「次網域」與DNS等

二、用Google Short Links新增、設定短網址

1. 啟用Google Short Links之後,接下來就可開始使用縮短網址的服務。

2. 進入Google Short Links,在URL處輸入原始網址。在Short Link處輸入自訂的短網址。(可設定要不要公開此短網址)

3. 在最右上角有個「My links」可看到所有自訂的短網址。這些短網址都可刪除、編輯或修改權限。另外還可觀看短網址的「流量統計」。

4. 除了手動增加外,此服務也提供Bookmarklet(小書籤),在書籤工具列放個按鈕新增。

參考來源

Google Short Links 可「自訂網域」的短網址轉址服務!

使用app-engine-patch發揮Django的威力(七)

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

讓guestbook作用

現在讓我們添加創建和顯示guestbook條目的能力。添加如下代碼到/guestbook/views.py的末尾:

from django.views.generic.list_detail import object_list
from django.views.generic.create_update import create_object
from django.contrib.auth.decorators import login_required
from guestbook.models importGreeting

def list_entries(request):
return object_list(request,Greeting.all())

@login_required
def create_entry(request):
# Add username to POST data, so it gets set in the created model
# You could also use a hidden form field for example, but this is more secure
request.POST = request.POST.copy()
request.POST['author']= str(request.user.key())
return create_object(request,Greeting, post_save_redirect=’/guestbook’)

並更改/gustbook/urls.py:

from django.conf.urls.defaults import*

urlpatterns = patterns(”,
(r’^,’guestbook.views.list_entries’),
(r’^sign/,’guestbook.views.create_entry’),
(r’^signup/,’guestbook.views.create_new_user’),
(r’^login/,’django.contrib.auth.views.login’,{‘template_name’:'guestbook/user_create_form.html’}),
(r’^logout/,’django.contrib.auth.views.logout_then_login’,{‘login_url’:'/guestbook/’}),
)

這個generic view 期望你創建一個/guestbook/templates/greeting_list.html的模板:

<html>
<head>
</head>
<body>
<divclass=”login”>
{% if user.is_authenticated %}
Welcome, {{ user.username }}
{% if user.is_active %}
<ahref=”/guestbook/logout”>
{% else %}
<ahref=”{% google_logout_url “/guestbook/” %}”>
{% endif %}Logout</a>
{% else %}
<ahref=”{% google_login_url request.get_full_path %}”>Login with your Google account</a><br>
<ahref=”/guestbook/login”>Login with your normal account</a><br>
<ahref=”/guestbook/signup”>Sign up</a><br>
{% endif %}
</div>
{% for object in object_list %}
<p>{{object.author.username}}: {{object.content}}</p>
{% endfor %}
<ahref=”/guestbook/sign/”>Add entry</a>
</body>
</html>

and /guestbook/templates/greeting_form.html:
<html>
<head>
</head>
<body>
<formmethod=”POST”action=”.”>
{{form.content}}
<inputtype=”submit”value=”create”>
</form>
</body>
</html>

登入留言現在已經能作用了。我們已經為/guestbook/修改了generic view提供的index.html模板 ,通過引用相關函數增加了顯示留言列表功能。Django提供的login_required裝飾器能確保使用者必須登入才能訪問所請求的視圖。裝飾器默認 登入網址為/accounts/login/ ,可以在settings.py文件裡修改:

LOGIN_URL = ‘/guestbook/login’

注意:如果想要匿名使用者能夠登入留言,將考慮的事實是匿名使用者不存在關鍵屬性(key-attribute)。

參考來源

使用app-engine-patch發揮Django的威力

使用app-engine-patch發揮Django的威力(六)

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

Django使用者登入

添加這個到你的/guestbook/urls.py:

urlpatterns = patterns(”,

(r’^login/,’django.contrib.auth.views.login’,{‘template_name’:'guestbook/user_create_form.html’}),
)

請注意我已經重用了使用者創建的模板,以使你避免再次copy&paste.就是這樣了。創建一個新的使用者或者打開 http://localhost:8000/guestbook/login/ 看看generic view是如何生效的。

注意:如果沒有特別規定的話,成功登入後登入的generic view將跳轉到/accounts/profile.你可以在settings.py裡面設置
LOGIN_REDIRECT_URL = “/guestbook/”來改變它,不然登入的使用者將會看到404消息頁面.

登出鏈接當前只在google登出使用者面前顯示。為了給Django登出使用者提供,只需在”/guestbook/urls.py”裡面加入如下generic view:

#the “logout” generic view expects a template logged_out.html. Using this generic view, you can redirect the user to
#another page after log out.
(r’^logout/,’django.contrib.auth.views.logout_then_login’,{‘login_url’:'/guestbook/’}),

並且替換/guestbook/templates/index.html 如下:

{%if user.is_active %}<a href=”/guestbook/logout”>
{%else%}<a href=”{% google_logout_url “/guestbook/” %}”>
{% endif %}Logout</a>

因 為Google使用者沒有 is_active 這個域(field set),所以上述例子可以生效。存在一些更好的方法檢查我們正在處理的是哪一類型的使用者,但是對於我們的案例來說這個更簡單並且可以工作。app- engine-patch的程式庫版本中包括區分不同使用者類型的方法。

參考來源

使用app-engine-patch發揮Django的威力

使用app-engine-patch發揮Django的威力(五)

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

提供非Google使用者的認證 現在讓我們為沒有Google帳戶的人員添加認證.我們再次將儘可能的利用generic views,這樣做比較簡單而且比手寫
views出錯的可能性更小。

第一件事情就是讓使用者可以登入,還記得我們在settings.py中設置的AUTH_USER_MODULE指令嗎?這將使我們能夠
導入通常的Django 使用者model,而且還有混合身份驗證的支持。

註冊使用者

為了讓使用者可以註冊帳戶,在/guestbook/views.py中添加如下代碼:

from django.contrib.auth.models importUser
from django.contrib.auth.forms importUserCreationForm
from django.shortcuts import render_to_response
from django.http importHttpResponseRedirect

def create_new_user(request):
form =UserCreationForm()
# if form was submitted, bind form instance.
if request.method ==’POST’:
form =UserCreationForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
# user must be active for login to work
user.is_active =True
user.put()
returnHttpResponseRedirect(‘/guestbook/login/’)
return render_to_response(‘guestbook/user_create_form.html’,{‘form’: form})

這裡不需要講太多細節,因為它實際上與標準Django沒什麼區別。app-engine-patch在幕後處理了創建使用者的細節,包括使用
App Engine的datastore代替通常Django中使用的資料庫表。

UserCreationForm自動由Django提供。這個view創建了一個表單對象,並把它傳給一個叫user_create_form.html的模板。
當一個表單通過POST請求提交後,一個使用者被創建,接著使用者將被重定向到登入頁面。如果表單是無效的,將提供一個有意義的錯誤信息提示.

為了看到這個操作,還有兩件事得做。首先把”create_new_user方法掛到你的URL配置文件/guestbook/urls.py中去:

urlpatterns = patterns(”,

(r’^signup/,’guestbook.views.create_new_user’),
)

並創建一個模板 /guestbook/templates/user_create_form.html:
<html>
<head>
</head>
<body>
<formaction=”.”method=”post”>
<table>
{{form.as_table}}
</table>
You can also login with your <a href=”{% google_login_url “/guestbook” %}”>Google account.</a>
<inputtype=”submit”value=”submit”>
</form>
</body>
</html>

參考來源

使用app-engine-patch發揮Django的威力

使用app-engine-patch發揮Django的威力(四)

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

創建models

打開你的/guestbook/models文件,創建如下的資料庫模型:

from google.appengine.ext import db
from django.contrib.auth.models importUser

classGreeting(db.Model):
author = db.ReferenceProperty(User)
content = db.StringProperty(multiline=True)
date = db.DateTimeProperty(auto_now_add=True)

使用者model將會由app-engine-patch提供,所以這裡不必特意指定了。因為我們希望Django和Google使用者認證可以
生效,所以需要在你的設置中激活中間件並制定正確的使用者model.在/settings.py中替換Django的認證中間件:

# Replace Django’s AuthenticationMiddleware with HybridAuthenticationMiddleware.
MIDDLEWARE_CLASSES =(

‘ragendja.auth.middleware.HybridAuthenticationMiddleware’,

)

並添加

# Change the User model class
AUTH_USER_MODULE =’ragendja.auth.hybrid_models’

# Add google_login_url and google_logout_url tags
GLOBALTAGS =(‘ragendja.templatetags.googletags’,)

到文件的末尾。

這就是一切。現在你已經可同時使用Django和Google的使用者認證了。另外,你還可以啟用模板標記
以渲染隨時出現的Google登入和登出連結。要嘗試的話,創建一個/guestbook/templates/index.html文件

<html>
<head>
</head>
<body>compliant
<divclass=”login”>
{% if user.is_authenticated %}
Welcome, {{ user.username }}
<ahref=”{% google_logout_url request.get_full_path %}”>Logout</a>
{% else %}
<ahref=”{% google_login_url request.get_full_path %}”>Login</a>
{% endif %}
</div>
</body>
</html>

並且在/guestbook/urls.py中設置URL路由: from django.conf.urls.defaults import*

urlpatterns = patterns(”,
(r’^,’django.views.generic.simple.direct_to_template’,{‘template’:'index.html’}),
)

如果你現在在瀏覽器中加載http://localhost:8000/guestbook/ ,你要看到google認證的請求。

注意: 這裡你通過渲染html模板的同時也見到了Django的generic views是如何生效的.

參考來源

使用app-engine-patch發揮Django的威力

使用app-engine-patch發揮Django的威力(三)

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

一個實際的例子

為了實際證明app-engine-patch提供的一些特性,我們將使用Django重寫這個留言本(App Engine Helper)的應用程式: http://bit.ly/fobiM 。我們會使用generic views,並且為Google使用者和非Google使用者提供使用者認證。

Django項目結構

在Django,一個項目被分割為幾個應用包(app packages)。以某種方式創建給某個項目,一個功能獨立的特定應用是有可能的。因此,您可以封裝成插件在多個Django項目中使用(plug packages into multiple Django projects)例如,一個 app package將可以是
一個部落格的標籤程式庫。(a tagging library for a blog)

初看起來可能有與Django 的目錄組織有一些間接關聯。不過結構的好處是幫助您保持你的代碼結構化和可重複使用,這對較大的項目很重要。

除了應用, 「Django項目」還包含一個共通(global)設定檔和一個根URL配置檔(定義URL在框架的處理方式)。應用程式可以有額外的URL配置,也會 被加入到主URL配置檔。 「Django模板(template)」以類似的方式工作。有套用至所有應用程式的共通模板,也可以有特定應用的自訂模板。

配置你的項目

首先,我們配置app-engine-path的安裝,以便它準備就緒部署。打開Google App Engine的app.yaml配置文件,並替換application field為您的application id。您可以現在就執行manage.py update部署您的應用程式部署到Google App Engine。

如果你看一下範例項目的內容,您將看到範例應用程式放在一個叫myapp的目錄中 。我們來創建一個另一個應用,也就是留言簿。創建一個文件夾命名為guestbook,並創建這些文件:

__init__.py – Python會把包含這個文件的文件夾視為一個包
urls.py – 特定應用的URL配置.它控制在給定的URL上執行視圖(請求處理request handlers)
models.py – 應用的數據存儲模型
views.py – 包含視圖,Django中處理請求邏輯的術語
templates – 包含你的應用的HTML模板的文件夾

讓我們的安裝應用到我們的項目。要做到這一點,需要在settings.py中的INSTALLED_APPS列表中把你的應用名稱包含進來:

INSTALLED_APPS =(

‘guestbook’,
)

如果您正使用配合Django使用關聯式資料庫,你現在必須運行manage.py syncdb創造必要的資料庫表格。不過在App Engine中這一切都是多餘的。

現在讓我們把留言簿應用集成進全局URL路由。修改項目的global/urls.py 文件,使其包含如下行:

urlpatterns = patterns(”,

(r’^guestbook/’, include(‘guestbook.urls’)),
)

現在如果你訪問任何以/guestbook/開頭的網址,系統將會在應用特定URL配置文件/guestbook/urls.py中尋找匹配的請求。

參考來源

使用app-engine-patch發揮Django的威力

使用app-engine-patch發揮Django的威力(二)

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

使用app-engine-patch的理由

app-engine-patch從 Django框架移植儘可能多的東西到App Enginem,所以你不需要太多的調整,就可使用Django組件。同時移植現有的Django 代碼到App Engine也會比較容易。app-engine-patch也減少「傳統的Django」和用於「App Engine上的Django」兩者的差別。因此,要是某天想從App Engine切換到自己的主機,也比較輕鬆,很大程度的降低對於App Engine的依賴。

另個重要因素是龐大的Django社區。app-engine- patch還附帶ragendja,可提供更多的特性,包括事務裝飾器和全局模板標記。
app-engine-patch所提供的特性的全部清單在項目的主頁: http://code.google.com/p/app-engine-patch/

app-engine-patch堅持使用常規的Datastore API而不是使用「App Engine Helper」定製的BaseModel模擬,其優點為完全的模擬並不可能,另外也能第一時間即獲得最新的(常規)Datastore版本。

app-engine-patch還提供多種「App Engine Helper」所缺少的特性,進一步的細節在該項目的主頁。另一個重要區別是,app-engine-patch支持最新的穩定版本Django ,而Helper支持的是版本0.96 (svn trunk支持1.0版)。

獲得 app-engine-patch

為了使你容易啟動一個項目,app-engine-patch分發為一個自包含的範例項目。您可以瀏覽項目主頁獲得最新版本: http://code.google.com/p/app-engine-patch/downloads/list

App-engine-patch 需要 the App Engine SDK 才能工作: http://code.google.com/appengine/downloads.html.

在Windows和Mac OS X上 ,你必須使用安裝程序所提供的SDK 。如果你是在Linux上,把SDK的文件夾中包含在您的PATH環境變量或在/usr/local/google_appengine 。請確保SDK的文件夾命名為google_appengine 。

要啟動樣本項目,更改appengine-patch- sample文件夾,並從命令行執行manage.py runserver。

app-engine-patch將在幕後啟動App Engine開發服務器,現在你已經準備好了。

如果您從瀏覽器訪問 http://localhost:8000,您將看到範例項目中的活動。該範例演示了部分Django的generic views的使用,generic views為常見任務如創建或編輯model實例等提供快捷方式。

參考來源

使用app-engine-patch發揮Django的威力

使用app-engine-patch發揮Django的威力(一)

researcher

This site has been moved to dreamerslab.com

本站已經移至 dreamerslab.com

摘要

Django是以Python寫成的開放原始碼網路應用程式框架。Django框架讓網路應用程式的開發更輕鬆,Django的主要目標是使得開發複雜的、資料庫驅動的網站變得簡單。Django注重組件的重用性和「可插拔性」,敏捷開發和 Don’t Repeat Yourself。在Django中Python被普遍使用,甚至包括配置文件和數據模型。

因為一些概念差異,一些Django特性不能實現在Google App Engine,其中之一的主要特性即是Django的ORM。這是由於AppEngine的 Datastore 不同於Django的ORM所基於的傳統的關聯式資料庫模型所導致。

app-engine-patch則是此難點的解決方法。該項目可以在這裡找到:http://code.google.com/p/app-engine-patch/

本文將列舉一些理由,來說明為什麼你可能需要在你的項目中考慮使用Django和app-engine-patch。然後用一個範例來證明app-engine-patch的威力。此範例支持Google和非Google帳戶認證。

為何使用Django而非Webapp?

使用Django而不是Google App Engine內建的webapp框架的理由:Django已經被許多類型的網路應用程式廣泛使用多年。此外, Django有著廣泛的開發者討論社群。有許多部落格討論Django ,有個極為常用的郵件列表,以及#djangoIRC頻道。

Webapp是專為Google App Engine開發的,而Django也已成為「標準」的Python網路框架。其他一些框架,則有Pylons或cherrypy。 這些框架大部分是可以在App Engine上工作的,但Django有較為突出的特點。它提供對大型項目而言必備的的重要特性,比如內置的國際支持,快取,認證會話,中間件支持等等。

Webapp缺少這些大部分的特性,而且在目前也難以切換至另一個系統。Django則會減少對於App Engine的依賴。

參考來源

使用app-engine-patch發揮Django的威力(譯者: 星子
Unleash Django with app-engine-patch(原文)