<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 24249 -->
<!-- Reviewed: no -->
<sect1 id="zend.service.amazon.ec2.securitygroups">
    <title>Zend_Service_Amazon_Ec2: Sicherheitsgruppen</title>

    <para>
        Eine Sicherheitsgruppe ist eine benante Sammlung von Zugriffsregeln. Diese Zugriffsregeln
        spezifizieren welcher zufließende (z.B. hereinkommende) Netzwerkverkehr an die Instanz
        zugestellt werden soll. Jeder andere zufließende Verkehr wird weggeworfen.
    </para>

    <para>
        Man kann die Regeln für Gruppen jederzeit verändern. Die neuen Regeln werden automatisch
        für alle laufenden Instanzen, und Instanzen die in Zukunft gestartet werden, erzwungen.
    </para>

    <note>
        <title>Maximale Sicherheitsgruppen</title>
        <para>Man kann bis zu 100 Sicherheitsgruppen erstellen.</para>
    </note>

    <sect2 id="zend.service.amazon.ec2.securitygroups.maintenance">
        <title>Wartung von Sicherheitsgruppen</title>

        <example id="zend.service.amazon.ec2.securitygroups.maintenance.create">
            <title>Eine neue Sicherheitsgruppe erstellen</title>

            <para>
                <code>create</code> erstellt eine neue Sicherheitsgruppe. Jede Instanz wird in
                einer Sicherheitsgruppe gestartet. Wenn während dem Start keine Sicherheitsgruppe
                spezifiziert wurde, werden die Instanzen in der standardmäßigen sicherheitsgruppe
                gestartet. Instanzen mit der gleichen Sicherheitsgruppe haben untereinander
                unbegrenzten Netzwerkzugriff. Instanzen verhindern jeden Versuch eines
                Netzwerkzugriffs von anderen Instanzen aus unterschiedlichen Sicherheitsgruppen.
            </para>

            <para>
                <code>create</code> gibt ein boolsches <constant>TRUE</constant> oder
                <constant>FALSE</constant> zurück
            </para>

            <programlisting language="php"><![CDATA[
$ec2_sg = new Zend_Service_Amazon_Ec2_Securitygroups('aws_key',
                                                     'aws_secret_key');
$return = $ec2_sg->create('mygroup', 'my group description');
]]></programlisting>
        </example>

        <example id="zend.service.amazon.ec2.securitygroups.maintenance.describe">
            <title>Eine Sicherheitsgruppe beschreiben</title>

            <para>
                <code>describe</code> gibt Informationen über die Sicherheitsgruppen zurück welche
                einem selbst gehören.
            </para>

            <para>
                Wenn Namen von Sicherheitsgruppen spezifiziert werden, werden Informationen über
                diese Sicherheitsgruppen zurückgegeben. Andernfalls, werden Informationen über
                alle Sicherheitsgruppen zurückgegeben. Wenn eine Gruppe spezifiziert wird, die
                nicht existiert wird ein Fehler zurückgegeben.
            </para>

            <para>
                <code>describe</code> gibt ein Array zurück das Informationen über
                Sicherheitsgruppen enthält welches ownerId, groupName, groupDescription und ein
                Array enthält das alle Regeln dieser Sicherheitsgruppe enthält.
            </para>

            <programlisting language="php"><![CDATA[
$ec2_sg = new Zend_Service_Amazon_Ec2_Securitygroups('aws_key',
                                                     'aws_secret_key');
$return = $ec2_sg->describe('mygroup');
]]></programlisting>
        </example>

        <example id="zend.service.amazon.ec2.securitygroups.maintenance.delete">
            <title>Eine Sicherheitsgruppe löschen</title>

            <para>
                <code>delete</code> entfernt die Sicherheitsgruppe. Wenn man versucht eine
                Sicherheitsgruppe zu löschen die Instanzen enthält, wird ein Fehler zurückgegeben.
                Wenn man versucht eine Sicherheitsgruppe zu löschen die von einer anderen
                Sicherheitsgruppe referenziert ist, wird ein Fehler zurückgegeben. Wenn, zum
                Beispiel, Sicherheitsgruppe B eine Regel hat die den Zugriff von Sicherheitsgruppe
                A erlaubt, kann Sicherheitsgruppe A nicht gelöscht werden, bis die betreffende
                Regel entfernt wurde.
            </para>

            <para>
                <code>delete</code> gibt ein boolsches <constant>TRUE</constant> oder
                <constant>FALSE</constant> zurück.
            </para>

            <programlisting language="php"><![CDATA[
$ec2_sg = new Zend_Service_Amazon_Ec2_Securitygroups('aws_key',
                                                     'aws_secret_key');
$return = $ec2_sg->delete('mygroup');
]]></programlisting>
        </example>
    </sect2>

    <sect2 id="zend.service.amazon.ec2.securitygroups.authorize">
        <title>Zugriff authorisieren</title>

        <example id="zend.service.amazon.ec2.securitygroups.authorize.ip">
            <title>Authorisierung durch die IP</title>

            <para>
                <code>authorizeIp</code> fügt einer Sicherheitsgruppe eine Erlaubnis hinzu
                basierend auf einer IP Adresse, dem Protokoll Typ und einem Port Bereich.
            </para>

            <para>
                Erlaubnisse werden spezifiziert durch das IP Protokoll (TCP, UDP oder ICMP), der
                Quelle der Anfrage (durch IP Bereich oder einem Amazon EC2 Benutzer-Gruppe Paar),
                den Quell- und Ziel-Port Bereichen (für <acronym>TCP</acronym> und UDP), und den
                ICMP Codes und Typen (für ICMP). Wenn ICMP authorisiert wird kann -1 als Wildcard in
                den Typ- und Codefeldern verwendet werden.
            </para>

            <para>
                Änderungen einer Erlaubnis werden Instanzen über die Sicherheitsgruppe so schnell
                wie möglich mitgeteilt. Abhängig von der Anzahl der Instanzen, kann es trotzdem zu
                einer kleinen Verzögerung kommen.
            </para>

            <para>
                <code>authorizeIp</code> gibt ein boolsches <constant>TRUE</constant> oder
                <constant>FALSE</constant> zurück
            </para>

            <programlisting language="php"><![CDATA[
$ec2_sg = new Zend_Service_Amazon_Ec2_Securitygroups('aws_key',
                                                     'aws_secret_key');
$return = $ec2_sg->authorizeIp('mygroup',
                               'protocol',
                               'fromPort',
                               'toPort',
                               'ipRange');
]]></programlisting>
        </example>

        <example id="zend.service.amazon.ec2.securitygroups.authorize.group">
            <title>Authorisierung durch die Gruppe</title>

            <para>
                <code>authorizeGroup</code> fügt die Erlaubnis für eine Sicherheitsgruppe hinzu.
            </para>

            <para>
                Änderungen einer Erlaubnis werden Instanzen über die Sicherheitsgruppe so schnell
                wie möglich mitgeteilt. Abhängig von der Anzahl der Instanzen, kann es trotzdem zu
                einer kleinen Verzögerung kommen.
            </para>

            <para>
                <code>authorizeGroup</code> gibt ein boolsches <constant>TRUE</constant> oder
                <constant>FALSE</constant> zurück.
            </para>

            <programlisting language="php"><![CDATA[
$ec2_sg = new Zend_Service_Amazon_Ec2_Securitygroups('aws_key',
                                                     'aws_secret_key');
$return = $ec2_sg->authorizeGroup('mygroup', 'securityGroupName', 'ownerId');
]]></programlisting>
        </example>
    </sect2>

    <sect2 id="zend.service.amazon.ec2.securitygroups.revoke">
        <title>Zugriff entziehen</title>

        <example id="zend.service.amazon.ec2.securitygroups.revoke.ip">
            <title>Entziehen durch die IP</title>

            <para>
                <code>revokeIp</code> entzieht den Zugriff zu einer Sicherheitsgruppe basieren
                auf einer IP Adresse, einem Protokoll Typ und einem Port Bereich. Der Zugriff
                der entzogen werden soll muß mit den gleichen Werte spezifiziert werden mit
                denen der Zugriff erlaubt wurde.
            </para>

            <para>
                Erlaubnisse werden spezifiziert durch das IP Protokoll (TCP, UDP oder ICMP), der
                Quelle der Anfrage (durch IP Bereich oder einem Amazon EC2 Benutzer-Gruppe Paar),
                den Quell- und Ziel-Port Bereichen (für <acronym>TCP</acronym> und UDP), und den
                ICMP Codes und Typen (für ICMP). Wenn ICMP authorisiert wird kann -1 als Wildcard in
                den Typ- und Codefeldern verwendet werden.
            </para>

            <para>
                Änderungen einer Erlaubnis werden Instanzen über die Sicherheitsgruppe so schnell
                wie möglich mitgeteilt. Abhängig von der Anzahl der Instanzen, kann es trotzdem zu
                einer kleinen Verzögerung kommen.
            </para>

            <para>
                <code>revokeIp</code> gibt ein boolsches <constant>TRUE</constant> oder
                <constant>FALSE</constant> zurück
            </para>

            <programlisting language="php"><![CDATA[
$ec2_sg = new Zend_Service_Amazon_Ec2_Securitygroups('aws_key',
                                                     'aws_secret_key');
$return = $ec2_sg->revokeIp('mygroup',
                            'protocol',
                            'fromPort',
                            'toPort',
                            'ipRange');
]]></programlisting>
        </example>

        <example id="zend.service.amazon.ec2.securitygroups.revoke.group">
            <title>Entziehen durch die Gruppe</title>

            <para>
                <code>revokeGroup</code> fübt eine Erlaubnis zu einer Sicherheitsgruppe hinzu.
                Die Erlaubnis die entzogen werden soll muß mit den gleichen Werten spezifiziert
                werden mit denen die Erlaubnis erteilt wurde.
            </para>

            <para>
                Änderungen einer Erlaubnis werden Instanzen über die Sicherheitsgruppe so schnell
                wie möglich mitgeteilt. Abhängig von der Anzahl der Instanzen, kann es trotzdem zu
                einer kleinen Verzögerung kommen.
            </para>

            <para>
                <code>revokeGroup</code> gibt ein boolsches <constant>TRUE</constant> oder
                <constant>FALSE</constant> zurück.
            </para>

            <programlisting language="php"><![CDATA[
$ec2_sg = new Zend_Service_Amazon_Ec2_Securitygroups('aws_key',
                                                     'aws_secret_key');
$return = $ec2_sg->revokeGroup('mygroup', 'securityGroupName', 'ownerId');
]]></programlisting>
        </example>
    </sect2>
</sect1>
