2017-10-26 9 views
0

私はAWS PHP SDKを使用していましたが、IAMの役割と権限以外のすべてを手に入れているようです。AWS IAM簡単な英語の役割とポリシー

誰かがIAMの役割がどのように動作するか、最も単純な用語で私に説明し、次の用語を説明していただけます:StatementIdActionARNそして最も重要なPrincipal簡単な英語で?

あなたに私の混乱の原因を与えるために、私は最近直面した問題です。私は、リソースのメソッドがラムダ関数をトリガするAPIゲートウェイを作成しようとしています。

$lambdaClient->addPermission([ 
       'FunctionName' => 'fn name', 
       'StatementId' => 'ManagerInvokeAccess', 
       'Action' => 'lambda:InvokeFunction', 
       'Principal' => 'apigateway.amazonaws.com', 
      ]); 

しかし、いくつかの他のスレッドの誰かが同じため、以下を使用することが提案中:

const permissions = { 
    FunctionName: target, 
    StatementId: 'api-gateway-execute', 
    Action: 'lambda:InvokeFunction', 
    Principal: 'apigateway.amazonaws.com', 
    SourceArn: 'arn:aws:execute-api:' + nconf.get('awsRegion') + ':' + nconf.get('awsAccountId') + ':' + nconf.get('apiGatewayId') + '/*'}; 

最初のものはない来るどのようにコピーするまでは、このビットを貼り付け働いていませんでしたアカウント情報は含まれていますが、2番目のアカウント情報はありますか?また、全く別のものを貼り付けた別の人が、himのために同じ作業をする人もいます。最後の例( "Fn :: Join"のような)にはたくさんのキーがあります。どこから始めるべきか、それが何であるかは分かりません。

どのようにこれらのポリシーを見つけるか?私たちはどこかからコピーして貼り付けますか?それを確認する方法はありますか?その場合、常にどのようなキーを指定する必要があります。

私は今は完全に混乱しているので、助けていただければ幸いです。

答えて

2
How does one figure out where to find these policies? 

あなたは、彼らがサポート校長、アクションと文が何であるかを見つけるために、特定のサービスのためにAWSのマニュアルを参照する必要があります。たとえば、DynamoDBのポリシーを調べる必要がある場合は、DynamoDB API Permissionをチェックします。 AWSはIAMを使用してすべてのサービスを認可する必要があるため、最初は混乱する可能性がありますが、時間が経つにつれて順調になります。

私は

  • StatementId(Sid)ポリシーの各部分を説明しましょう - そのわずかとオプションの文識別子(例えば1、2、などABCD &)および一部のサービス(例えばSQS、SNS)のためにそれが必要です一意性

  • アクション - あなたのポリシーでは、AWSサービスで行うことができます。たとえば、DynamoDBの場合は、テーブルの作成、新規アイテムの入力を許可することができます。&など。EC2インスタンスの場合、起動と停止が許可されます。

  • ARN(Amazon Resource Name) - これは一意EC2サーバ、S3バケット、DynamoDBのテーブルとさえIAMポリシーのようなAWSのリソースを識別するための一意の名前である、役割&など

  • Principal - 校長が許可されているユーザーを制限することですこのポリシーを使用する。ユーザー(IAMユーザー、フェデレーションユーザー、または想定ロールユーザー)、AWSアカウント、AWSサービス、またはリソースへのアクセスを許可または拒否するその他のプリンシパルエンティティとすることができます。また

あなたはその中にアカウントIDとワイルドカード「*」またはARNを使用することができますいずれかResourceパラメータを含める必要があります。

+0

ありがとう、それは少し物事を明確にしています。ラムダ関数を作成するときに、S3バケット(バケット)に完全にアクセスしたいと思っています。そのためのポリシーを作成するにはどうすればいいですか(ポリシーをコピーして貼り付ける場所、つまり完全に理解した状態で最初から作成するにはどうすればいいですか)ありがとう! – supersan

+1

S3については、いくつかの概念を理解する必要があります。 S3へのアクセスは、IAMポリシー、バケットポリシー、およびアクセス制御リストによって許可することができます。ラムダを使用してS3バケットにアクセスする場合は、S3へのアクセスを許可するだけでなく、ラムダがポリシーを持つIAMロールを引き受けることを許可するIAMポリシーが必要です。これを行うには、ポリシーに加えてロールで、信頼関係を追加する必要があります。信頼関係は、ロールを作成するときにウィザードでラムダを選択すると自動的に作成されます。 – Ashan

2

まず、AWSの世界へようこそ! :-D

IAM(一般的に)を類推して理解する方法について疑問を説明しようとします。

ORG1という組織があると考えてください。

Deparments of ORG1: HR-DEPT、TEST-DEPT、DEV-DEPT

Employees of ORG1: EMP1、EMP2、EMP3 ... EMP10

Members of HR dept: HR1、HR2、HR3

今私は彼らに許可を与える人事部の役割を作成したい従業員のを雇う/中断する。ポリシーは、以下のようになります。

{ 
    "Version": "2012-10-17", // This is version of the template. Don't change this. This is NOT a date field for your use. 
    "Statement": [ 
     { 
      "Sid": "SOME-RANDOM-ID-WITH-NUMBER-1P1PP43EZUVRM", // This is used as ID in some cases to identify different statments 
      "Principal": HR-dept, // the dept who is allowed to assume this role or the one who is allowed to invoke this role 
      "Effect": "Allow", // has only 2 values: ALLOW/DENY. Either You want to provided the below privileges or you want to striped off these privileges. 
      "Action": [ 
       "hire", 
       "suspend", 
      ], // these are privileges which are granted 
      "Resource": "EMP1", // the entity on whom do you want to apply those actions on. In this case employee EMP1. 
      "Condition": { 
       "ArnLike": { 
        "AWS:SourceArn": "HR*" // You want anyone from HR-dept whose id starts with HR to be able to execute the action.ie HR1,HR2 or HR3 . 
       } 
      } 
     } 
    ] 
} 

今と同じ視点から以下のコードを理解しよう(内部このコードは上記と同様のテンプレートを作成します):

const permissions = { 
     FunctionName: target, 
     StatementId: 'api-gateway-execute', // This is just an ID. Dont sweat about it. 
     Principal: 'apigateway.amazonaws.com', //which entity group the invoker belongs to 
     Action: 'lambda:InvokeFunction', // The privilege you are giving to API gateway api's 
     SourceArn: 'arn:aws:execute-api:.. blah blah blah' // ie. the exact Id of api-gateway which all has rights to invoke lambda function 
}; 

AWS ARNでありますユニークなIDのリソース。種類はEmployeeIdのようなものです。これは世界的にユニークです。

私はあなたがAWSでやろうとしていることを理解するのが難しいと思われるかもしれませんが、あなたが直面する障害を乗り越えていくうちに、ある時点で快適になり始めるでしょう。そして、カスタマイズ可能なAWS機能がどのように機能しているかを賞賛します。

+0

うわー..これはちょうど素晴らしいことでした!このような簡単な言葉で説明していただきありがとうございます。それは今より多くの意味があります。私は多くのアナロジーに戻ってきます!さて、1つか2つ以上のものは、この "Fn :: Join"ビジネスは何ですか?そして、 '' Action '=>' sts:AssumeRole''というときはどういう意味ですか?それには特別な意味がありますか? – supersan

+1

'Fn :: Join'は、あなたが選んだ区切り文字で入力した文字列のリストを連結する' concat'メソッドです。これを確認してください。(http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-join.html)ex: '' Fn :: Join ':[" - "、 ["us"、 "east"、 "1"]] 'はあなたに' 'us-east-1 ''を与えます。 –

+1

'' Action '=>' sts:AssumeRole''は、セキュリティトークンサービス(sts)のAssumeRole * apiを使用してラムダ関数にアクセスし、ポリシーに定義されているリソースにアクセスするための一時的な認証情報を生成して返します。 –

関連する問題