

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Octroi de l’accès à la fonction à une organisation
<a name="permissions-function-organization"></a>

Pour accorder des autorisations à tous les comptes d'une [AWS Organizations](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_introduction.html)organisation, nous vous recommandons `put-resource-policy` de créer une politique JSON complète avec la clé de `aws:PrincipalOrgID` condition.

**Important**  
L'utilisation `put-resource-policy` remplace toute politique basée sur les ressources existante sur la ressource. Si la ressource possède déjà des autorisations définies avec`add-permission`, les `put-resource-policy` remplace. `get-resource-policy`À utiliser pour récupérer la politique existante avant d'apporter des modifications.

## Utiliser une politique JSON complète (recommandé)
<a name="permissions-function-organization-json"></a>

L'exemple de politique suivant accorde l'accès invoqué à tous les membres Comptes AWS de l'organisation `o-a1b2c3d4e5f` :

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "org-access",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "o-a1b2c3d4e5f"
                }
            }
        }
    ]
}
```

Enregistrez la politique dans un fichier nommé `policy.json` et appliquez-la :

```
aws lambda put-resource-policy \
  --resource-arn arn:aws:lambda:{{us-east-2}}:{{123456789012}}:function:{{my-function}} \
  --policy file://policy.json
```

Avec une politique JSON complète, vous pouvez également refuser l'accès à des comptes spécifiques au sein d'une organisation :

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "allow-org",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "lambda:InvokeFunction",
            "Resource": "arn:aws:lambda:us-east-2:123456789012:function:my-function",
            "Condition": {
                "StringEquals": {
                    "aws:PrincipalOrgID": "o-a1b2c3d4e5f"
                }
            }
        },
        {
            "Sid": "deny-specific-account",
            "Effect": "Deny",
            "Principal": {
                "AWS": "arn:aws:iam::999888777666:root"
            },
            "Action": "lambda:InvokeFunction",
            "Resource": [
                "arn:aws:lambda:us-east-2:123456789012:function:my-function",
                "arn:aws:lambda:us-east-2:123456789012:function:my-function:*"
            ]
        }
    ]
}
```

## Utilisation de l'autorisation d'ajout
<a name="permissions-function-organization-add-permission"></a>

Pour les cas d'utilisation simples, vous pouvez utiliser `add-permission` l'`principal-org-id`option. La commande suivante accorde l'accès à l'invocation à tous les utilisateurs de l'organisation `o-a1b2c3d4e5f` :

```
aws lambda add-permission \
  --function-name my-function \
  --statement-id org-access \
  --action lambda:InvokeFunction \
  --principal * \
  --principal-org-id o-a1b2c3d4e5f
```

**Note**  
Dans cette commande, `Principal` est `*`. Cela signifie que tous les utilisateurs de l’organisation `o-a1b2c3d4e5f` obtiennent des autorisations d’invocation de fonction. Si vous spécifiez un rôle Compte AWS ou comme étant le`Principal`, seul ce principal obtient les autorisations d'invocation des fonctions, mais uniquement s'il fait également partie de l'`o-a1b2c3d4e5f`organisation.

Pour plus d'informations, consultez [aws : PrincipalOrg ID](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-principalorgid) dans le *guide de l'utilisateur IAM*.