second first commit
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
# GuardDuty
|
||||
|
||||
**Protocol:** REST JSON
|
||||
|
||||
**Endpoint:** `http://localhost:4566`
|
||||
|
||||
Floci implements the GuardDuty detector management lifecycle and organization-configuration
|
||||
readback for local SDK, CLI, and Terraform workflows. Detectors are isolated by account and
|
||||
region and use the configured Floci storage mode.
|
||||
|
||||
## Supported Operations
|
||||
|
||||
| Operation | Method and path | Description |
|
||||
|---|---|---|
|
||||
| `CreateDetector` | `POST /detector` | Create the account's detector (one per account and region) |
|
||||
| `GetDetector` | `GET /detector/{detectorId}` | Return detector status, frequency, features, and tags |
|
||||
| `UpdateDetector` | `POST /detector/{detectorId}` | Update status, frequency, and features |
|
||||
| `DeleteDetector` | `DELETE /detector/{detectorId}` | Delete the detector |
|
||||
| `ListDetectors` | `GET /detector` | List detector IDs with pagination |
|
||||
| `DescribeOrganizationConfiguration` | `GET /detector/{detectorId}/admin` | Return organization auto-enablement configuration |
|
||||
| `UpdateOrganizationConfiguration` | `POST /detector/{detectorId}/admin` | Update organization auto-enablement configuration |
|
||||
| `EnableOrganizationAdminAccount` | `POST /admin/enable` | Designate the delegated administrator account |
|
||||
| `DisableOrganizationAdminAccount` | `POST /admin/disable` | Remove the delegated administrator account |
|
||||
| `ListOrganizationAdminAccounts` | `GET /admin` | List the delegated administrator account |
|
||||
| `CreateMembers` | `POST /detector/{detectorId}/member` | Create GuardDuty member accounts for a detector |
|
||||
| `ListMembers` | `GET /detector/{detectorId}/member` | List detector members with pagination and association filtering |
|
||||
| `TagResource` | `POST /tags/{resourceArn}` | Add tags to a detector |
|
||||
| `UntagResource` | `DELETE /tags/{resourceArn}` | Remove tags from a detector |
|
||||
| `ListTagsForResource` | `GET /tags/{resourceArn}` | List detector tags |
|
||||
|
||||
Feature lists and each feature's `additionalConfiguration` list are returned in the order
|
||||
they were submitted, so Terraform's ordered list blocks re-plan cleanly. A missing detector
|
||||
is reported as `BadRequestException` with the exact message the Terraform AWS provider
|
||||
matches for not-found detection, mirroring AWS.
|
||||
|
||||
## Configuration
|
||||
|
||||
| Variable | Default | Description |
|
||||
|---|---|---|
|
||||
| `FLOCI_SERVICES_GUARDDUTY_ENABLED` | `true` | Enable or disable GuardDuty |
|
||||
| `FLOCI_STORAGE_SERVICES_GUARDDUTY_MODE` | *(inherits global)* | Optional GuardDuty storage-mode override |
|
||||
| `FLOCI_STORAGE_SERVICES_GUARDDUTY_FLUSH_INTERVAL_MS` | `5000` | Hybrid storage flush interval in milliseconds |
|
||||
|
||||
Unless a GuardDuty-specific override is set, detector state follows the global
|
||||
`FLOCI_STORAGE_MODE` setting. Persistent, hybrid, and write-ahead-log modes restore
|
||||
detectors across restarts.
|
||||
|
||||
## Example
|
||||
|
||||
```bash
|
||||
export AWS_ENDPOINT_URL=http://localhost:4566
|
||||
|
||||
DETECTOR_ID=$(aws guardduty create-detector \
|
||||
--enable \
|
||||
--finding-publishing-frequency SIX_HOURS \
|
||||
--tags env=local \
|
||||
--query DetectorId --output text)
|
||||
|
||||
aws guardduty get-detector --detector-id "$DETECTOR_ID"
|
||||
aws guardduty list-detectors
|
||||
|
||||
aws guardduty update-organization-configuration \
|
||||
--detector-id "$DETECTOR_ID" \
|
||||
--auto-enable-organization-members ALL
|
||||
aws guardduty describe-organization-configuration --detector-id "$DETECTOR_ID"
|
||||
|
||||
aws guardduty delete-detector --detector-id "$DETECTOR_ID"
|
||||
```
|
||||
|
||||
## Current Scope
|
||||
|
||||
- Detector status, finding-publishing frequency, features (including
|
||||
`additionalConfiguration` sub-features), tags, and timestamps are modeled.
|
||||
- Organization semantics are readback-only. Floci has no Organizations service, so
|
||||
`adminAccountId` membership is not validated, delegated-administrator permissions are not
|
||||
enforced on the organization endpoints, and auto-enablement is never fanned out to member
|
||||
accounts. Organization configuration is stored per calling account and echoed back as
|
||||
submitted — sufficient for Terraform's `aws_guardduty_organization_configuration`,
|
||||
`aws_guardduty_organization_configuration_feature`, and
|
||||
`aws_guardduty_organization_admin_account` resources in a single-account workflow.
|
||||
- No findings are generated: detection, malware scans, and the findings APIs
|
||||
(`ListFindings`, `GetFindings`, filters, and publishing destinations) are not implemented.
|
||||
- Member creation and listing are implemented. Invitation, IP-set, threat-intel, and coverage APIs are not implemented.
|
||||
- The deprecated `dataSources` request/response structures are not modeled; the Terraform
|
||||
provider treats their absence as "not configured".
|
||||
Reference in New Issue
Block a user